将自定义位置点添加到MKMapView

时间:2015-04-01 18:45:59

标签: apple-maps

我正在开发一个使用MKMapView / Apple地图作为基础的应用,我想在地图中添加自定义点,以便能够拥有"用户"如果满足特定标准,则能够从一个点移动到另一个点。我如何能够添加自定义地图位置图标和用户图标?我已经研究过覆盖层和其他东西,我老实说它已经全部丢失了。

项目保存在地图上的特定区域内,我想将3种不同类型的对象添加到特定的经度和纬度坐标,并让用户从一个移动到另一个。关于如何在地图上获得积分的任何建议?

我尝试过的事情:

  1. mapitem
  2. mkmappointforcoordinate
  3. mkmappoint

1 个答案:

答案 0 :(得分: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属性即可。

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