0

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

我可以看到那里的纬度和经度!为什么我不能得到它?

4

2 回答 2

1

response.mapItems数组在 API 中声明为 type [AnyObject]!

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

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

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

要解决此问题,请转换res为 an MKMapItem,然后地标属性将变为可见。

使用此代码获取placemark

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

for此外,循环后的这一行:

self.userSearch = response.mapItems.placemark

有关更多信息,请参阅答案。

于 2015-07-16T05:43:32.043 回答
0

试试这个链接,我希望对你有用:

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

于 2015-07-16T05:32:09.857 回答