来自Swift的MKMapItem的纬度和经度?

时间:2015-07-16 05:23:42

标签: ios swift mapkit mkmapitem

使用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";
}

我可以在那里看到纬度和经度!为什么我无法得到它?

2 个答案:

答案 0 :(得分:1)

computer.cpu.price数组在API中声明为response.mapItems类型。

for循环并未明确表示res属于[AnyObject]!类型(或MKMapItem实际上是response.mapItems)。

因此res被视为AnyObject的一个实例,它没有被定义为具有地标属性。

这就是为什么你得到编译器错误&#39; [MKMapItem]&#39;不可用....

要解决此问题,请将placemark投射为res,然后地标属性将变为可见。

使用此代码获取MKMapItem

placemark

此外,for res in response.mapItems { if let mi = res as? MKMapItem { self.userSearch.append(mi.placemark) } } 循环之后的这一行:

for

有关详细信息,请参阅THIS answer。

答案 1 :(得分:0)

尝试此链接,希望能为您效劳:

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