apple-maps - 将自定义位置点添加到 MKMapView

标签 apple-maps

我正在开发一款使用 MKMapView/Apple map 作为基础的应用程序,我想向 map 添加自定义点,以便“用户”能够从一个位置移动如果满足特定标准,则指向另一个。如何添加自定义 map 位置图标和用户图标?我研究过叠加层和其他东西,老实说我已经迷失在其中了。

该项目保留在 map 上的特定区域内,我想将 3 种不同类型的对象添加到特定的经度和纬度坐标,并让用户从一个对象移动到另一个对象。关于如何获取 map 上的点有什么建议吗?

我尝试过的事情:

  1. 地标
  2. map 项目
  3. mkmappointfor坐标
  4. mkmappoint

最佳答案

要让这项工作成功,需要做一些事情。首先,您需要一个基于 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
    }
}

然后,您可以使用数据创建注释对象,即您想要在 map 上显示的位置。以下是填写 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.")

接下来,将注释单独添加到 map View 中:

mapView.addAnnotation(london)
mapView.addAnnotation(oslo)

或者作为许多项目的数组:

mapView.addAnnotations([london, oslo])

最后,使您的 View Controller 成为 map View 的委托(delegate),并实现 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 而言,每个注释都是唯一的,因此,如果您想将一张注释制作成伦敦的图片,将另一张注释制作成奥斯陆的图片,或者您只是想要不同的图钉颜色,那没问题 – 这实际上取决于你。您的“用户图标”可以是您想要的任何内容,只需设置注释 View 的 image 属性即可。

我希望这能为您指明正确的方向。祝你好运!

关于apple-maps - 将自定义位置点添加到 MKMapView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29398452/

相关文章:

ios - React Native 和 iOS 模拟器的地理位置错误

ios - 添加一个按钮以打开Apple Maps以获取路线

apple-maps - Apple Map 中的多个航点

flutter - 在 flutter 上打开 Apple map 会给出无效的 URL 方案

ios - 使用iOS MapKit显示路况和路况时间

ios - 在 iOS 中以编程方式调用号码时显示联系人姓名

ios - 删除 Apple Maps 默认注释

ios - 使用特定的 MKRoute 信息打开 Apple Maps 应用程序

ios - Ionic 3 - 使用 Google map /Apple map 应用程序无需导航即可打开地理定位