高德地图导航地图inforwindow不能自动跟现实吗

虽然是转载的,还是说几句吧。网上百度地图导航路线规划倒是挺多的,苹果自带的高德导航确实挺少,研究了好久发现就这个讲的稍微全一点,把需要用到的类什么的都讲清楚了。不过高德有个方法可以跳转到它自己的地图上,给个起点终点自动帮你计算路线,还有文字标注,这点倒是很方便。

[MKMapItem openMapsWithItems:items launchOptions:dictM];//这个方法就是跳转到自带地图的,不用手机上安装有高德地图也可以跳转。还是把具体代码贴出来,网上其它地方有,这里就当总结一下。


//这里是自己计算路线,相当于把起点和终点用线连接,选择不同的模式就会有不同的路线。

IOS7在mapping框架中可以看到MapKit的一些改变和新增。其中一个关键的例子,新增一个API可以提供两点之间的路线指南。今天我们将建立一个简单的选择路线的应用来看一下如何使用这个API。我们也会简要的介绍一下叠加渲染的API。

MapKit中我们需要许多不同的类,但通过依次使用它们会觉得非常简单的。为了查询苹果服务器方向指南集合,我们需要MKDirectionsRequest 对象的封装细节。这个类在IOS6中已经被应用使用了,能够来生成自己的行车方向指南。在IOS7已经进一步被扩展,可以允许开发者从苹果服务器中请求方向指南。

为了创建一个请求,我们需要设置源和目的地,两个地点都是MKMapItem 对象。这些对象都代表地图上的位置,包括它的地点以及一些元数据,比如名称,手机号码和URL。有几种方法可以用来创建这个对象,其中一种可以使用用户当前的地点;

如果用户第一次运行这个程序,他们将被询问是否允许使用他们当前位置:


你也可以用initWithPlacemark:方法使用自定义位置来创建一个地图item,这也引入了一个新的类。MKPlacemark代表地图上的实际位置,也就是它的经纬度。我们可以使用一个反向地理编码从CoreLocation来生成一个地标,但因为那不是本文的重点,所以我们将用一些固定的坐标创建地标。把所有的放在一起我们就可以完成一个MKDirectionsRequest RequestsAlternateRoutes。如果路由服务器可以找出多条合理的路线,设置YES将会返回所有路线。否则,只返回一条路线。现在我们已经有了一个可用的请求,可以发送去请求路线。需要使用MKDirections 类,它有一个用MKDirectionsRequest对象构造的函数:MKDirections *directions 对象也有一个取消方法,提供给当前任何正在运行的请求。还有calculating属性,如果当前有个请求正在执行,返回为true。单个的MKDirections对象一次只能运行一个请求,额外去请求将会失败。如果你想运行多个并发的请求,你需要创建多个MKDirections对象。但注意,请求太多的话可能会导致苹果服务器因为节流返回错误。[directions 对象,如它的名字,代表用户选择的两点之间的路线。它包含一些关于路线信息的属性:1、        name:从服务器找到路线时自动生成的。它是基于路线的重要特征。2、        }];我们已经创建了一个实例方法在地图上绘制一个路线,下一节将会看到。渲染polyline我们已经收到路线的polyline,我们想把它体现到地图上。IOS7改变了地图渲染的方法,通过MKOverlayRenderer类。如果我们想做自定义形状或者非标准渲染技术,可以定义一个子类。但是,许多叠加渲染技术都是为标准用例使用的。我们想渲染一个polyline,可以使用对象MKPolylineRenderer。我们会稍后看一下何时何地创建渲染器,先看看上一节提到的plotRouteOnMap: }这个方法带有MKRoute参数,通过属性mapView添加一个路线的polyline叠加层到MKMapView上。iavr变量_routeOverlay用来关联polyline。也就是说,当方法被调用时,可以移除一个已经存在的,然后用新的来代替它。虽然我们已经添加了叠加层到地图View上,但是没有被画出来。这是因为地图不知道如何绘制这个叠加层对象,这也就是为什么要引入类MKOverlayRenderer 。当一个叠加层出现在地图view上,地图view会通过代理获取渲染器去绘制它。然后,当用户缩放和拖动地图时,渲染器就会根据不同的地图状态去绘制叠加层。我们需要遵循MKMapViewDelegate协议,实现下面的方法来为地图view提供一个渲染器绘制polyline;

我们已经获得一个有点简化了的案例,我们知道这里只会有一个叠加层,类型为MKPolyline,所以不需要任何代码去决定回调哪种渲染器。我们创建MKPolylineRenderer对象,它是MKOverlayRenderer的子类,目的是为了绘制polyline叠加层。我们设置了一些简单的属性(strokeColor 和 lineWidth),以便于可以看到叠加层,然后返回新的对象。剩下的就是设置地图view的delegate属性,以便于当叠加层添加到地图时调用delegate里的方法:

搭建路由器现在我们已经讨论了请求方向指南和获取响应的处理流程,但是没有给出太多关于本文应用的细节。虽然它没有进一步演示MapKit的细节,但是值得快速看一下它是如何构造出来的。这个应用不是特别有用,因为它仅仅给出从当前位置到华盛顿特区的路线。应用中使用storyboard,并基于导航栏控制器。下面是app中包含的一些控制器:1、        SCViewController。主视图。允许用户发送路线请求并当接收到响应时,把整个路线绘制到地图view上。它包含一个按钮(当接收到响应时显示)去查看详细路线,并推进下个视图控制器入栈。2、       

因为每个step视图控制器包含MKMapView,所以添加折线叠加层和主视图方法一样。剩下的部分很简单。如果你运行app,你应该会获得从当前位置(或者模拟器模拟位置)到白宫最好的路线。你可以在Xcode的Debug菜单里更改模拟器位置,虽然看起来可能只能在美国大陆当前位置获取路线(也是可以理解的,驾车穿越大西洋并不容易)。   

可能不是很有用的应用,但是随着少量的CoreLocation,接下来制作自己的方向指南应用就不会有太大的困难了。

}

通过系统广播调用的方式实现功能调用或信息透出

开发者在调用 URI 之前需要先判断是否安装了高德地图车机版。如果没有安装,下载安装高德地图车机版。然后调用相关地图功能系统/第三方在使用接口协议时,车机设备中需要安装高德地图车机版,同时需要拼写符合协议规范的URI串,通过key值区分不同的协议接口,例如:设置昼夜模式

执行上述代码就可以控制车机版高德地图的昼夜模式显示。

针对第一次安装地图或者强制停止后,调用具体广播协议,无法唤起地图的问题。

根本原因:Android 3.0后,对静态注册的广播做了限制。

若方案一未能解决您的问题,部分OS仍然无法唤起。请采用下面示例,先主动唤起应用。

/高德地图车镜版本(后视镜)使用该包名/
/高德地图车机版本 使用该包名/
 

SDK会和具体项目的导航软件包一起发布。

第 2 步:熟悉项目相关的交互功能列表

每一个项目都会确定自己所需要的交互功能,我们这边会根据项目交付一张最终的交互功能列表给使用者。列表包含了本项目所涉及的所有交互功能的名称、功能说明、开发文档链接、接口名,形式如下表格,

在语音识别等交互场景中,系统侧发送回车位/回地图请求给导航,导航侧响应指令后,返回结果给系统侧。

导航侧接收到Send2Car消息时,将相应POI信息传给系统侧,系统侧执行窗口提示。    

导航侧周期通知系统侧,告知系统侧导航进程还在正常运行

表格简单明了的显示了使用者要开发什么功能以及和该功能对应的开发文档的位置和对应接口名字,这样使用者就可以根据该表格了解使用自己关心的接口,不用去阅读所有的开发文档。

解压SDK包,将里面的inc(头文件)和lib(库文件)放到需要的位置。具体请参考和。

SDK和导航都提供了健全的日志机制,在开发联调的过程中遇到任何问题都可以通过日志快速的定位。具体请参考中的调试说明。

您也可以前往开发指南阅读更多相关的内容。

}

我要回帖

更多关于 高德地图导航地图 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信