使用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";
}
我可以在那里看到纬度和经度!为什么我无法得到它?
答案 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)