【问题标题】:How to use MKLocalSearch In MKMapView如何在 MKMapView 中使用 MKLocalSearch
【发布时间】:2015-05-21 06:26:23
【问题描述】:

我在 MKMapView 中使用 MKLocalSearch..我的实现如下

extension MYClass: SendLocationDelegate{

    func sendCoOrdinates(loccoordinate:CLLocation, placemark:CLPlacemark){

        println(" Google VC coordinate is as \(loccoordinate.coordinate.longitude) \(loccoordinate.coordinate.latitude)")
        let location:CLLocationCoordinate2D = CLLocationCoordinate2D(latitude:loccoordinate.coordinate.latitude, longitude: loccoordinate.coordinate.longitude)
        let theSpan : MKCoordinateSpan = MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta:0.01)
        let theRegion : MKCoordinateRegion = MKCoordinateRegion(center: location, span: theSpan)
        self.mapView.setRegion(theRegion, animated: false)

        let request = MKLocalSearchRequest()
        request.region = mapView.region
        let search = MKLocalSearch(request: request)

        search.startWithCompletionHandler({(response: MKLocalSearchResponse!,
            error: NSError!) in

            if error != nil {
                println("Error occured in search: \(error.localizedDescription)")

            } else if response.mapItems.count == 0 {

                println("No matches found")

            } else {

                println("Matches found")

                println("\(response)")

            }
        })



    }


}

输出:Google VC 坐标为 72.8561644 19.0176147 搜索出错:操作无法完成。 (MKErrorDomain 错误 1。) 为什么会发生这种情况?

已编辑:但是当我将请求更改为

let request = MKLocalSearchRequest()
 request.naturalLanguageQuery = "india"
 //request.region = mapView.region
 let search = MKLocalSearch(request: request)

我得到了很好的回应

{ boundingRegion = ""; 地图项 = ( " {\n isCurrentLocation = 0;\n name = India;\n placemark = \"India, India @ +/- 0.00m,区域 CLCircularRegion (标识符:' 半径2237301.34', 中心:,半径:2237301.34m)\";\n}" ); }

【问题讨论】:

    标签: ios swift mkmapview mklocalsearch


    【解决方案1】:

    一切正常......只是你在请求中犯了一个错误,不包含 naturalLanguageQuery 作为

     let request = MKLocalSearchRequest()
     request.region = mapView.region
     let search = MKLocalSearch(request: request)
    

    在这种情况下,request.naturalLanguageQuery 被设置为 nil....所以你得到了未知类型的 (MKErrorDomain error 1)。查看 Apple 文档herenaturalLanguageQuery 不能包含 nil 值...所以制作一个用它来请求

    let request = MKLocalSearchRequest()
     request.naturalLanguageQuery = "india"
     let search = MKLocalSearch(request: request)
    

    您可以使用region 参数将搜索结果列表缩小到指定区域内或附近的搜索结果。指定区域并不能保证结果都在该区域内。这只是对搜索引擎的提示。所以region 可以在这里作为一个选项。或者您可以提出要求,以获得更好的结果

    let request = MKLocalSearchRequest()
    request.naturalLanguageQuery = "india"
    request.region = mapView.region
    let search = MKLocalSearch(request: request)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 1970-01-01
      • 1970-01-01
      • 2015-01-29
      相关资源
      最近更新 更多