Swift是否可以为MKLocalSearchRequest和MKLocalSearchResponse设置特定国家/地区

Kiw*_*Tew 2 iphone xcode objective-c ios swift

我想知道是否有可能在mapKit中为MKLocalSearchRequest和MKLocalSearchResponse设置一个国家/地区?

在我的地图视图中,用户可以搜索zip /状态.但我不想在其他国家展示热门歌曲,因为这里没有任何意义.

提前致谢,

localSearchRequest = MKLocalSearchRequest()
        localSearchRequest.naturalLanguageQuery = "23138"
        localSearch = MKLocalSearch(request: localSearchRequest)
        localSearch.startWithCompletionHandler { (localSearchResponse, error) -> Void in



            if localSearchResponse == nil || self.mapView == nil{
                var alert = UIAlertView(title: nil, message: "Place not found", delegate: self, cancelButtonTitle: "Try again")
                alert.show()
                return
            } else {

                let location = CLLocationCoordinate2D(latitude: localSearchResponse.boundingRegion.center.latitude, longitude:     localSearchResponse.boundingRegion.center.longitude)


                let span = MKCoordinateSpanMake(0.05, 0.05)
                let region = MKCoordinateRegion(center: location, span: span)
                self.mapView.setRegion(region, animated: false)


                self.pointAnnotation = MKPointAnnotation()
                self.pointAnnotation.coordinate = location
                self.mapView.addAnnotation(self.pointAnnotation)
            }


        }
Run Code Online (Sandbox Code Playgroud)

mat*_*ttt 9

虽然似乎没有办法明确约束MKLocalSearchRequest到特定的地理上下文,但您可以通过以下步骤非常接近:

  1. 将搜索请求的region属性设置为MKCoordinateRegion对应于美国(不幸的是,阿拉斯加和夏威夷使该地区相当大;根据您的应用,您可能只想使用美国大陆).
  2. 在回调处理程序中,您可以过滤从其属性属性MKMapItem返回的数组,仅使用其国家/地区代码所属的数组.MKLocalSearchResponseplacemarkcountryCode"US"

如果您没有获得所需的结果,则可以调查其他第三方API服务,以查看其中任何一项是否更适合您的特定用例.