2017-02-04 2 views
0

Ich benutze MKLocalSearch, um nach Orten zu suchen und das Ergebnis auf der Karte anzuzeigen. Das Problem ist, dass manchmal, wenn ein Restaurant in einem anderen Staat zum Beispiel existiert, es in den anderen Staat geht, ich möchte die Ergebnisse auf meine Region beschränken. Hier ist mein CodeLimit MKLocalSearch auf eine Region

http://pastebin.com/89TxwR7X

 let searchRadius: CLLocationDistance = 10000 
    let region = MKCoordinateRegionMakeWithDistance(location.coordinate, searchRadius * 2.0, searchRadius * 2.0) 

    map.setRegion(region, animated: true) 

     let request = MKLocalSearchRequest() 
    request.naturalLanguageQuery = getRandomPlace() 
    request.region = map.region 

    let search = MKLocalSearch(request: request) 
    search.start { response, error in 
     guard let response = response else { 
      print("There was an error searching for: \(request.naturalLanguageQuery) error: \(error)") 
      return 
     } 

     for item in response.mapItems { 
      self.dropPinZoomIn(item.placemark) 
     } 
    } 

Antwort

1

Sie können nicht die Antwort verhindern Ergebnisse einschließlich, die über einige künstliche Grenze sind. Sie haben eine region für Ihre Anfrage definiert und die Ergebnisse werden diese Region bevorzugen. Aber selbst dann sind die docs ziemlich klar:

Angabe einer Region garantiert nicht, dass die Ergebnisse alle innerhalb der Region sein werden. Es ist nur ein Hinweis auf die Suchmaschine.

Also, was Sie bekommen ist, was Sie bekommen. Sie können nicht verhindern, dass der Server die zurückgegebenen Ergebnisse zurückgibt.

Wenn Sie dann durch die zurück response Elemente auf der Karte ausgeführt werden soll und nicht machen Ortsmarken für einige von ihnen, weil Sie nicht mögen, wo sie sind, dass ganz bei Ihnen ist. Aber Ihr Code tut nicht tun Sie das; Sie machen blind Blindstellen für alle von ihnen.