生活随笔
收集整理的这篇文章主要介绍了
iOS 高德地图(二)(进阶具体使用的细节)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
2019独角兽企业重金招聘Python工程师标准>>>
前面我们配置好了SDK的环境,也在高德的官网中申请了AppKey: de5b39fb2b066ed80c51383bb3a1fe42 ,接下来我们就可以开始代码的编写,实现一个基本的地图显示了 代码配置显示地图(在开发指南中查看代码需要配置的内容) 1.配置appKey,一般在工程的入口配置[MAMapServices sharedServices].apiKey = @"用户Key"; 导入头文件#import <MAMapKit/MAMapKit.h> 并在启动位置配置apiKey(这里需要使用到申请的appKey) - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [MAMapServices sharedServices].apiKey = @"de5b39fb2b066ed80c51383bb3a1fe42"; // Override point for customization after application launch. return YES; } 2.在显示地图的界面调用以下代码显示地图 (1)导入头文件<MAMapKit/MAMapKit.h> (2)声明地图的协议<MAMapViewDelegate> (3)添加地图的UI
3.运行工程,即可看到地图的基本显示 4.地图成功显示后,我们可以做一个定位,显示我们目前所在的位置 开启定位功能: (1)在plist表单中加入字段请求允许访问用户的坐标 <一> NSLocationWhenInUseUsageDescription 当百度地图使用的时候可以获取用户坐标 <二> NSLocationAlwaysUsageDescription不管百度地图是否在使用,都能获取用户坐标 (2)设置追踪用户目前的位置(在_mapView创建的地方编写即可) _mapView.showsUserLocation = YES; //直接跟随到用户目前的界面 [_mapView setUserTrackingMode: MAUserTrackingModeFollow animated:YES]; //几种类型设置 typedef NS_ENUM(NSInteger, MAUserTrackingMode) { MAUserTrackingModeNone = 0, // 不追踪用户的location更新 MAUserTrackingModeFollow = 1, // 追踪用户的location更新 MAUserTrackingModeFollowWithHeading = 2 // 追踪用户的location与heading更新 }; (3)在delegate中返回用户的坐标 #pragma mark - 定位功能 -(void)mapView:(MAMapView *)mapView didUpdateUserLocation:(MAUserLocation *)userLocation updatingLocation:(BOOL)updatingLocation { if(updatingLocation) { //取出当前位置的坐标 NSLog(@"latitude : %f,longitude: %f",userLocation.coordinate.latitude,userLocation.coordinate.longitude); } } (4)打印出目前用户的地址经纬度,即可通过经纬度设定当前的地图位置 //制定地图的中心点,让地图显示在该点上 CLLocationCoordinate2D coordinate2D = CLLocationCoordinate2DMake(latitudeGuangzhou, longitudeGuangzhou); _mapView.centerCoordinate = coordinate2D; (5)注意事项: 在模拟器上,不能真实的定位你当成的坐标,所以必须在模拟器上设置一个虚拟坐标。 操作如下: <1>选中模拟器 <2>在顶部栏中选择Debug <3>选择Debug中的location <4>设定location中的customLocation <5>一般这里默认的是北京的紫禁城坐标,你需要先获取一个可用的坐标再给他赋值 <6>一般可用的坐标都需要使用地图的相应方法获取(这里简单的做法是有真机测试获取手机的真实坐标) <7>这里提供一个广州的坐标 #define latitudeGuangzhou 23.176230 #define longitudeGuangzhou 113.340806
前面我们完成了地图的基本展示和定位,下面我们一起来发掘地图上的其他功能。这次我们来探索一下地图中的搜索功能。 1.使用搜索功能,需要再添加一个搜索功能库,这个库可以在高德的Demo文件中找到,添加到工程中可以直接使用 2.添加完framework库以后,就可以直接使用了搜索功能了(通过关键字进行搜索) (1)导入头文件 #import <AMapSearchKit/AMapSearchAPI.h> (2)导入使用到的协议 <AMapSearchDelegate> (3)创建一个搜索类 <1>创建一个SeachAPI对象,传入参数:appKey和回调对象实现者声明 <2>创建一个搜索请求对象(设置请求的参数) <3>搜索请求对象的属性设置(搜索模式,搜索地点关键字,搜索城市,是否返回拓展信息) (4)在回调中获取搜索结果的信息 <1>回调中成功返回会有请求的对象信息和返回的对象信息 <2>先判断是否具有所搜索的对象,如果有搜多结果,则打印处理搜索出来的结果 <3>打印一些有用的结果参数 <4>返回对象AMapPOI中的一些基本属性(参数Model) 3.搜索功能的另外一种形式(通过区域中心范围搜索) <1>同样需要创建_search对象 <2>在配置请求信息时设置的属性参数不同 <3>主要设置的搜索按照location返回搜索结果(经纬度设置) <4>设置排序方式,使用按照距离远近排序(近的排在前面) 5.在搜索请求添加约束条件 <1>filter为request添加约束条件 <2>filter中的属性costFilter约束消费的平均范围 <3>属性AMapRequireGroupbuy设置搜索行业的信息(这里表明搜索全行业) 6.到这里,搜索功能就基本结束了,具体的其他功能,可以查看高德地图Demo中的MapViewPOI文件
接下来,需要了解一下高德地图中的大头针的简单使用,来标示出我们需要搜索的位置,和我们自己的位置 1.大头针的简单创建 (1)创建一个大头针的对象 (2)设置大头针的坐标位置 (3)设置大头针的文本提示语 (4)把大头针加入到数组中annotations为装载大头针的数组 (5)把大头针数组设置到mapView中 <1>设置mapView中的大头针数组 <2>显示加载到mapView中的大头针 2.大头针的自定义 在mapView的回调中,有重新设定mapView大头针的方法 这里回调中给出了大头针对象和mapView对象 可以根据这两个参数生成一个大头针的view对象,返回给mapView,mapView将自动改变大头针的样式 (1)大头针的重用机制 这里使用的大头真重用机制与tableview中的重用机制相仿,当大头针拖拽出界面以后,大头真会被回收,用来显示别的大头针(这样可以使上千上万的大头针不需要一起加载到mapView中,只是现实界面中所需要显示的即可) (2)大头针的样式改动 <1>canShowCallout:是否显示选中时的状态显示(显示设定好的标题) <2>animatesDrop:拖动时是否具有动画 <3>draggable:是否支持拖动 <4>rightCalloutAccessoryView:显示在气泡右侧的view设定 <5>pinColor:大头针的颜色,有MAPinAnnotationColorRed, MAPinAnnotationColorGreen, MAPinAnnotationColorPurple三种 <6>注意:拖动需要长按大头针方可使用(在允许拖动的状态下)
转载于:https://my.oschina.net/gongzhiming/blog/637898
总结
以上是生活随笔 为你收集整理的iOS 高德地图(二)(进阶具体使用的细节) 的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得生活随笔 网站内容还不错,欢迎将生活随笔 推荐给好友。