2017-12-10 4 views
0

Momentan arbeite ich an einer Restaurant-App, in der Menschen Fotos machen und sie an Google Places taggen können. Da meine App jedoch auf Entwicklungsländer wie Indien ausgerichtet ist, sind die Google Places nicht alle gut definiert. So erlaube ich Nutzern, nach einem Ort zu suchen, von dem sie meinen, dass er den Standort ihres Lieblingsrestaurants genauer widerspiegelt. Ich verwende PlaceAutocompleteFragment Fragment von Google Places API for android als Eingabemechanismus für Benutzer, um nach ihrem Lieblingsgelenk zu suchen. Um ihnen die Auswahl zu erleichtern, möchte ich die Ergebnisse jedoch auf eine bestimmte Region ausrichten - genauer gesagt auf die Stadt, in der die Suche durchgeführt wird.Google Place Autocomplete auf eine Stadt beschränken

Wie bekomme ich jedoch Stadt des aktuellen Standorts des Benutzers? Ich kann Breitengrade, Längengrade bekommen. Aber wie finde ich die Stadt entsprechend einem bestimmten Breitengrad und Lang?

Muss ich geocode die Adresse von lat, long um Adresse zu bekommen? Aber wenn ich das tue, wie bekomme ich dann zuverlässig einen Städtenamen? Und was wäre dann die korrekte Bereitstellung in der PlaceAutocompleteFragment, um einen "Stadt" -Filter zu setzen?

Also, was wäre der einfachste Weg, es zu tun? Irgendwelche Ideen? Bin dankbar.

+0

Ich bin mir nicht sicher, was Ihr Problem ist. 'setBoundsBias()' benötigt 'LatLngBounds' als Argument; Warum brauchst du den Namen der Stadt? – HEATH3N

+0

@ HEATH3N Weil verschiedene Städte Restaurants mit demselben Namen haben. Zusätzlich können verschiedene Städte unterschiedliche Größen haben. So für z.B. ein Metropolitan kann Radius von 40-50 km haben, eine kleine Stadt kann nur 10-20 km sein. Benachbarte Städte können mehrere Orte mit gemeinsamen regionalen Namen haben –

+0

Hmm, ich würde denken, dass Sie eine Liste von Übereinstimmungen sowieso anzeigen möchten, nein? Wenn der Benutzer nach einem gemeinsamen Kettenrestaurant wie McDonalds suchen würde, könnte es 10 in einer einzigen Stadt geben (oder vielleicht sind das nur die USA: /). Sie können entweder den ausgewählten Bereich auswählen (alle Standorte auf einer Karte mit dem Abstand vom Benutzer anzeigen) oder, wenn es erforderlich ist, dass sie sich am Standort befinden, den Radius auf eine kleine Entfernung beschränken und den Wert auswählen erstes Ergebnis. Ich werde weiter schauen; es kann einen Weg mit Mapbox oder OSM geben. – HEATH3N

Antwort

1
autocompleteFragment.setBoundsBias(new LatLngBounds(southwestLatLng, northeastLatLng)); 

setBoundsBias() nimmt eine LatLngBounds, die aus zwei LatLng Objekten repräsentiert die südwestlichen und nordöstlichen Punkte eines Begrenzungsrechtecks. Die Google APIs scheinen keine Methode zu sein, um die Grenzen einer Stadt zu erhalten. Daher müssen Sie herausfinden, welcher Radius innerhalb der aktuellen Breiten- und Längengrade des Benutzers gesucht und subtrahiert bzw. addiert werden kann, um die beiden Punkte abzuleiten begrenzendes Rechteck. Siehe: Calculating bounding box a certain distance away from a lat/long coordinate in Java

1

Sobald Sie die address Formular Geocoder erhalten haben, können Sie den Namen der Stadt aus der Adresse selbst erhalten. Hoffnung Code unten finden Sie auf dieser Weitere in der detaillierten google map Beispiel

Geocoder geocoder = new Geocoder(this, Locale.getDefault()); 
List<Address> addresses = geocoder.getFromLocation(MyLat, MyLong, 1); 
String cityName = addresses.get(0).getAddressLine(0); 
String stateName = addresses.get(0).getAddressLine(1); 
String countryName = addresses.get(0).getAddressLine(2); 

helfen Sie überprüfen die Verbindungen unten: http://www.demoadda.com/demo/android/load-googlemap_107

+0

Ist cityName immer in der ersten Adresszeile? Oder kann es zwischen den verschiedenen Adresszeilen variieren ... –

Verwandte Themen