1

向应用程序内的 MapKit 视图添加注释非常容易。

theMap: MKMapView!

let pa = MKPointAnnotation()
pa.title = "title!!" etc
theMap.addAnnotation(pa)

但是你到底是怎么让地图应用程序添加注释的呢?

以下是如何将地图应用程序打开到某个地址..

func appleMapApp() {
    quickAddressText = "123 Smith St 90210"
    let bottomText = "This shows at BOTTOM Of Maps App screen."

    let g = CLGeocoder()
    g.geocodeAddressString(quickAddressText) { placemarks, error in

        if let found = placemarks?.first, let lok = found.location {

            let p = MKPlacemark(coordinate: lok.coordinate, addressDictionary: nil)

            let mapItem = MKMapItem(placemark: p)
            mapItem.name = bottomText

            mapItem.openInMaps(launchOptions: showing(location: lok))
        }
    }
}

// convenient function...
func showing(location: CLLocation, meters m: CLLocationDistance = 1000)->[String : Any]? {
    let cr = MKCoordinateRegionMakeWithDistance(location.coordinate, m,m)
    let options = [
        MKLaunchOptionsMapCenterKey: NSValue(mkCoordinate: cr.center),
        MKLaunchOptionsMapSpanKey: NSValue(mkCoordinateSpan: cr.span)
    ]
    return options
}

太好了 - 但是你到底是如何将 a 传递MKPointAnnotation给实际的 Maps 应用程序的呢?

(再一次 - 在您自己的应用程序内的地图视图上添加 MKPointAnnotation 很容易。)

有任何想法吗?真的可以吗??

4

1 回答 1

1

我认为 openInMaps 只限制您使用五个可能的启动选项。但是我想知道您是否可以让Apple Maps以原始方式打开,openURL和maps.apple.com/maps,如this SO question所示。但是,对于最新的 iOS 版本,您似乎还需要在 info.plist 中的“URL Types ... URL Schemes”或“LSApplicationQueriesSchemes”下注册您正在使用的 URL。您也许可以将注释作为参数与 URL 一起传递。

于 2017-04-06T00:06:20.823 回答