簡體   English   中英

Swift中MKMapItem的經度和緯度?

[英]Latitude and longitude from MKMapItem in Swift?

使用MKLocalSearchRequest()得到一個MKMapItem數組。

我需要的只是該項目的緯度和經度。 看起來應該很容易。

let search = MKLocalSearch(request: request)
search.startWithCompletionHandler { (response, error) in
    for item in response.mapItems {

    }
}

我已經嘗試過println(item.latitude) 控制台輸出為nil

使用item.placemark來獲取經度/緯度似乎也不是一個選擇,因為'placemark' is unavailable: APIs deprecated as of iOS 7 and earlier are unavailable in Swift

為什么item.latitude為零? 為什么我無法進入placemark

println(item)的控制台輸出是這樣的:

<MKMapItem: 0x17086a900> {
isCurrentLocation = 0;
name = "Random University";
phoneNumber = "+1000000000";
placemark = "Random University, 400 Address Ave, City, NJ  01010-0000, United States @ <+34.74264816,-84.24657106> +/- 0.00m, region CLCircularRegion (identifier:'<+34.74279563,-84.24621513> radius 514.96', center:<+34.74279563,-84.24621513>, radius:514.96m)";
url = "http://www.shu.edu";
}

我可以在那看到緯度和經度! 我為什么不能得到它?

API中聲明了[AnyObject]!類型的response.mapItems數組[AnyObject]!

for循環未明確指出res屬於MKMapItem類型(或者response.mapItems實際上是[MKMapItem] )。

因此,將res視為AnyObject的實例,該實例未定義為具有地標屬性。

這就是為什么您得到編譯器錯誤“ placemark ”不可用的原因。

要解決此問題, MKMapItem res MKMapItemMKMapItem ,然后地標屬性將變為可見。

使用此代碼獲取placemark

for res in response.mapItems {
    if let mi = res as? MKMapItem {
        self.userSearch.append(mi.placemark)
    }
}

另外,在for循環之后的這一行:

self.userSearch = response.mapItems.placemark

有關更多信息,請參考答案。

試試這個鏈接,我希望為您工作:

http://www.ioscreator.com/tutorials/searching-map-view-ios8-swift

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM