十三年专注于网站建设与互联网应用开发,低调、有情怀的网络应用服务商!
南昌百恒科技微信公众号 扫一扫关注
tel-icon全国服务热线:400-680-9298,0791-88117053
扫一扫关注百恒科技微信公众号

IOS地图添加标注一:触发添加动作

百恒网络 2018-08-11 17:10:23 2701
       在iOS 6之后,苹果地图代替了谷歌地图。但API编程接口没有太大的变化,所以在南昌APP开发中开发人员不需要再学习很多新东西就能开发地图应用。而今天小编主要想为大家介绍一下在地图上视图上添加标注点。

       如果要实现在地图视图上添加标注点,需要两个步骤:一是触发添加动作,二是实现地图委托方法mapView:viewForAnnotation:。我们今天先来学习一下触发添加动作的方法。

       触发添加动作

       我们通过“查询”按钮触发添加标注动作,相关代码如下:

IOS地图添加标注一:触发添加动作一IOS地图添加标注一:触发添加动作二


       当用户点击“查询”按钮时,开始进行地理信息编码,如果编码成功,则调用completionHandler方法。第①行代码用于移除目前地图上所有的标注点,否则反复点击“查询”按钮,你会发现地图上的标注点越来越多。

       第②行代码使用MKCoordinateRegionMakeWithDistance函数创建一个结构体MKCoordinateRegion,该结构体封装了一个地图区域,其定义如下:


IOS地图添加标注一:触发添加动作三

       在上述代码中,成员center定义了区域中心点,它是CLLocationCoordinate2D结构体类型。span成员定义了区域的跨度,它是MKCoordinateSpan结构体类型。MKCoordinateSpan结构体封装了在地图上的跨度信息,它的定义如下:


IOS地图添加标注一:触发添加动作四

       在上述代码中,latitudeDelta为南北跨度,它的单位是“度”,1度大约是111公里。longitudeDelta为东西跨度,在赤道上1度大约是111公里,随着靠近两极,这个距离逐步变小,在地球的两个极点时变为0公里。它们是有差别的,这源于我们地球经线和纬线的中心点不同。

       在第②行代码中,MKCoordinateRegionMakeWithDistance函数的第一个参数是CLLocationCoordinate2D结构,指定了目标区域的中心点;第二个参数是目标区域南北的跨度,其单位是米;第三个参数是目标区域东西的跨度,其单位是米。后面两个参数的调整会影响地图缩放。

       第③行代码重新设置地图视图的显示区域。animated设置为true(或YES)时,会使地图有“飞”过去的动画效果。

       第④行代码用于实例化MyAnnotation对象。MyAnnotation类是我们自定义的实现MKAnnotation协议的地图标注点类。因为地图上的标注点是MKPinAnnotationView(大头针标注视图)类型,这个视图要求标注点信息由实现MKAnnotation协议的类提供。如果标识点上显示的信息是固定的,可以使用Map Kit API实现MKPointAnnotation标注类。第④~⑤行代码将地标CLPlacemark对象信息取出,放入到MapLocation对象中。为什么要这样导来导去呢?

       这是因为在MKPinAnnotationView视图中,只能接收实现MKAnnotation协议的类,而地标类CLPlacemark没有实现MKAnnotation协议。

       第⑥行代码把标注点MyAnnotation对象添加到地图视图上。一旦该方法被调用,地图视图委托方法mapView:viewForAnnotation:就会被回调。

       关于IOS地图添加标注中的触发添加动作就先介绍到这里,还有最后一个步骤将在下次为大家介绍,欢迎大家继续关注百恒网络公司网站!
400-680-9298,0791-88117053
扫一扫关注百恒网络微信公众号

欢迎您的光顾,我们将竭诚为您服务×

售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售后服务 售后服务
 
备案专线 备案专线
 
售后服务 售后服务
 
×