【问题标题】:Swift is it possible to set a specific country for MKLocalSearchRequest and MKLocalSearchResponseSwift 是否可以为 MKLocalSearchRequest 和 MKLocalSearchResponse 设置特定国家
【发布时间】:2015-07-27 19:23:41
【问题描述】:

我想知道是否可以在mapKit中为MKLocalSearchRequest和MKLocalSearchResponse设置一个国家?

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

提前致谢,

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)
            }


        }

【问题讨论】:

    标签: ios objective-c iphone xcode swift


    【解决方案1】:

    虽然似乎没有办法将MKLocalSearchRequest 明确限制在特定的地理环境中,但您可以通过以下步骤非常接近:

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

    如果您没有获得想要的结果,您可以调查其他第三方 API 服务,看看是否有任何更适合您的特定用例。

    【讨论】:

    • 我似乎可以找到您提到的那些属性。我也用我当前的代码更新了我的问题 :) 谢谢
    • CLPlacemark 属性正是要过滤的属性。这些属性与 Google Places API 用作过滤器参数的属性相同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-03
    • 2013-01-26
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多