Objective-C - Suche nach Straßen basierend auf einer vom Benutzer eingegebenen Abfrage

8

Ich möchte den Benutzern erlauben, nach einem Straßennamen zu suchen und die Ergebnisse in einem UITableView anzeigen zu lassen. Im Moment ist die Region nicht wichtig, sie kann aus jeder Region stammen.

Ich konnte in meinen Suchen kein relevantes Beispiel finden und ich weiß nicht, ob ich CLLocation oder MKLocalSearch verwenden soll.

Basierend auf der Dokumentation sollte ich MKLocalSearch verwenden:

  

Obwohl lokale Suche und Geocodierung ähnlich sind, werden sie unterstützt   verschiedene Anwendungsfälle Verwenden Sie Geokodierung, wenn Sie zwischen konvertieren möchten   Kartenkoordinaten und eine strukturierte Adresse, z. B. ein Adressbuch   Adresse. Verwenden Sie die lokale Suche, wenn Sie eine Reihe von Standorten suchen möchten   die der Eingabe des Benutzers entsprechen.

Aber ich habe beide Methoden ausprobiert und es gibt mir nur 1 Ergebnis (gerade - obwohl dort ein NSArray zurückgegeben wird.

Dies ist der CLGeocoder-Ansatz:

%Vor%

Und das ist mein MKLocalSearch-Versuch:

%Vor%

MKLocalSearch scheint in einigen Fällen mehr als eine Antwort zurückzugeben, aber diese beziehen sich auf Orte, die nicht nach Straßennamen suchen.

Vielen Dank im Voraus.

    
CristiC 26.05.2015, 14:47
quelle

3 Antworten

4

Das ist das nächste, was ich bekommen konnte. Dies beinhaltet den Google Places-API-Webdienst .

Hinweis: Sie könnten wahrscheinlich ihre Google Maps-API usw. verwenden. Ich bin mir sicher, dass es andere Möglichkeiten gibt, diese Informationen von den verschiedenen Google-APIs abzurufen.

%Vor%

Die Antwort ist ein JSON-Objekt. Konvertieren Sie es in ein Wörterbuch.

%Vor%

Die möglichen types scheinen zu sein

  • Route - & gt; Straßenname
  • Ort - & gt; Name der Stadt / des Ortes
  • Politisch - & gt; Staat, usw.
  • Geocode - & gt; lat / lang verfügbar
  • Sie könnten die Tabellenansicht mit den predictions füllen, die NUR route als Adresstyp enthalten. Das könnte funktionieren.

        
    lead_the_zeppelin 04.06.2015, 20:01
    quelle
    2

    CLGeocoder gibt einfach das Adressformat zurück. Schlagen Sie dies in Ihrem Code und spielen Sie mit den Inhalten von mapitems

    %Vor%     
    Fallah 02.06.2015 17:08
    quelle
    1

    Das zurückgegebene Array enthält mapItems , Sie können über das Array iterieren, um alle mapItems wie folgt herauszuziehen:

    %Vor%

    Jedes mapItem.placemark.thoroughfare enthält die Straße des Ortes, der gefunden wurde.

        
    rmp 04.06.2015 20:22
    quelle