纬度和经度从MKMapItem在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是nil?为什么我不能进入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";
}

我可以看到这里的经纬度!为什么我拿不到?

response.mapItems数组在API中声明为[AnyObject]!类型。

for循环没有明确地说res的类型是MKMapItem(或者response.mapItems实际上是[MKMapItem])。

所以res被当作一个没有定义placemark属性的AnyObject实例来对待。

这就是为什么你得到编译错误' placemark '是不可用....

要解决这个问题,将res转换为MKMapItem,然后placemark属性将变得可见。

使用以下代码获取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

相关内容

  • 没有找到相关文章

最新更新