将自定义位置点添加到 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?

如何将自定义图层添加到 Google 地图

如何在 MKMapView 上显示自定义注释?

从 UIViewController 中删除我的自定义 MKMapView

如何在 MKMapView 上添加的自定义注解中添加标题和副标题?