将自定义位置点添加到 MKMapView
Posted
技术标签:
【中文标题】将自定义位置点添加到 MKMapView【英文标题】:Adding custom location points to MKMapView 【发布时间】:2015-04-01 18:45:59 【问题描述】:我正在开发一个使用MKMapView
/ Apple 地图作为基础的应用程序,我想向地图添加自定义点,以便能够让“用户”能够从一个点移动到另一个点,如果满足特定标准。我如何能够添加自定义地图位置图标和用户图标?我研究过覆盖和其他东西,老实说,我迷失了所有这些。
该项目保留在地图上的特定区域内,我想将 3 种不同类型的对象添加到特定的经度和纬度坐标,并让用户从一个移动到另一个。关于如何在地图上获得点的任何建议?
我尝试过的事情:
-
地标
地图项
mkmappointfor 坐标
mkmappoint
【问题讨论】:
【参考方案1】:有一些事情可以使这项工作。首先,您需要一个基于MKAnnotation
的自定义类,提供标题和坐标。例如,这里有一个存储首都城市:
class Capital: NSObject, MKAnnotation
var title: String?
var coordinate: CLLocationCoordinate2D
var info: String
init(title: String, coordinate: CLLocationCoordinate2D, info: String)
self.title = title
self.coordinate = coordinate
self.info = info
然后,您可以使用您的数据(即您希望在地图上显示的位置)创建注释对象。以下是您填写 Capital
注释的方法:
let london = Capital(title: "London", coordinate: CLLocationCoordinate2D(latitude: 51.507222, longitude: -0.1275), info: "Home to the 2012 Summer Olympics.")
let oslo = Capital(title: "Oslo", coordinate: CLLocationCoordinate2D(latitude: 59.95, longitude: 10.75), info: "Founded over a thousand years ago.")
接下来,将注释单独添加到地图视图中:
mapView.addAnnotation(london)
mapView.addAnnotation(oslo)
或者作为一个包含很多项目的数组:
mapView.addAnnotations([london, oslo])
最后,让您的视图控制器成为您的地图视图的代表,并实现viewForAnnotation
,这样您就可以在用户点击您的城市图钉时显示一些信息。这是一个基本示例:
func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView!
let identifier = "Capital"
if annotation.isKindOfClass(Capital.self)
var annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier(identifier)
if annotationView == nil
annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: identifier)
annotationView!.canShowCallout = true
else
annotationView!.annotation = annotation
return annotationView
return nil
现在,就 ios 而言,每个注释都是独一无二的,因此,如果您想制作一个伦敦的图片和另一个奥斯陆的图片,或者您只是想要不同的大头针颜色,那很好 - 这真的是你。您的“用户图标”可以是任何您想要的,只需设置注释视图的image
属性即可。
我希望这会为您指明正确的方向。祝你好运!
【讨论】:
以上是关于将自定义位置点添加到 MKMapView的主要内容,如果未能解决你的问题,请参考以下文章
如何将自定义 kong 插件添加到 dockerized kong
是否可以将自定义交互式 UI 元素添加到 EditText?