2017-04-05 77 views
1

註釋添加到您的應用內的MapKit視圖中很容易。如何獲取Apple Maps App(不是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 
} 

這是偉大的 - 但如何赫克你在MKPointAnnotation實際的地圖應用程序傳遞?

(再次 - 它很容易在自己的應用程序中的地圖視圖中添加MKPointAnnotation。)

任何想法?它實際上可能嗎?

+0

有人,有人嗎? – Fattie

+0

我總是驚訝MapKit是如此驚人,而且用得很少。 – Fattie

回答

1

我認爲openInMaps僅限於the five possible launch options。但是,我想知道是否可以讓Apple Maps以原始方式打開,openURL和maps.apple.com/maps,如this SO question中所示。不過,對於最新的iOS版本,似乎您還需要在「URL類型... URL計劃」或「LSApplicationQueriesSchemes」下注冊您在info.plist中使用的URL。您可能能夠將註釋作爲參數傳遞給URL。

+0

只有五個啓動選項是一個很好的觀點。但是請注意,**你發送的是一個'MKPlacemark' ** - 所以,可以將一個MKPointAnnotation附加到那個?** Tricky! – Fattie

+0

我想這是最接近的答案!謝謝,我打勾了! – Fattie