Ich suche den Ort in meinen Apps mit dem Google Autocomplete Ort API und jetzt möchte ich den Breitengrad und die Länge des Ortes, die ich gesucht habe, zu bekommen. Wie bekomme ich den Breiten- und Längengrad von dem Ergebnis, das von AutoComplete Place API durch Google in Android zurückgegeben wurde?Get Lat Lang von einem Ort_id zurückgegeben von Autocomplete Ort api
Antwort
Jeder Ort, der in der Place-Autocomplete-Antwort zurückgegeben wird, hat eine ID und eine Referenzzeichenfolge wie erklärt here.
Verwendung entweder (vorzugsweise Id seit Referenz veraltet ist) Places API für die vollständigen Informationen über diesen Ort abzufragen (einschließlich lat/lng): https://developers.google.com/places/documentation/details#PlaceDetailsRequests
Bezüglich shyam Kommentar - Geocoding funktioniert nur, wenn Sie ein bekommen vollständige Adresse in der Autocomplete-Antwort, was nicht immer der Fall ist. Geocoding gibt auch eine Liste möglicher Ergebnisse, da die Ortsbeschreibung in der Autocomplete-Antwort nicht eindeutig ist. Abhängig von Ihren Anforderungen könnte Geocodierung ausreichen.
Geocoding ist eine sehr indirekte Lösung, und wie der zweite Responder sagte, wenn Sie "Apple Store" tun, kann es nicht die vollständige Adresse zurückgeben. Stattdessen:
Place_ID enthält alles, was Sie brauchen. Ich gehe davon aus, dass Sie wissen, wie Sie die place_id von der Places API erhalten (wenn nicht, haben sie ein vollständiges Beispiel).
Dann eine zweite Anforderung für die Ortsdetails (einschließlich Breite und Länge unter dem Geometrie Abschnitt) mit dem place_id im Anschluss an dieser Dokumentation ziehen: https://developers.google.com/places/documentation/details?utm_source=welovemapsdevelopers&utm_campaign=mdr-devdocs
Dies war sehr nützlich, um die vollständigen Daten eines Ortes zu erhalten. – karenms
Google Place Details ist die Antwort.
Von der place_id
du hast, Abfrage Platz Details der so etwas wie https://maps.googleapis.com/maps/api/place/details/json?placeid={placeid}&key={key}
und Sie können die lat
und lng
von result.geometry.location
JSON erhalten.
Dieser Ausschnitt ermöglicht die geografische Breite und Länge eines Ortes erhalten nach der Kennung zurück in die Auto-Vervollständigen
public class PlacesDetails {
private static final String PLACES_API_BASE = "https://maps.googleapis.com/maps/api/place";
private static final String TYPE_AUTOCOMPLETE = "/autocomplete";
private static final String TYPE_DETAIL = "/details";
private static final String OUT_JSON = "/json";
//private static final String API_KEY = "------------ make your specific key ------------; // cle pour le serveur
public PlacesDetails() {
// TODO Auto-generated constructor stub
}
public ArrayList<Double> placeDetail(String input) {
ArrayList<Double> resultList = null;
HttpURLConnection conn = null;
StringBuilder jsonResults = new StringBuilder();
try {
StringBuilder sb = new StringBuilder(PLACES_API_BASE + TYPE_DETAIL + OUT_JSON);
sb.append("?placeid=" + URLEncoder.encode(input, "utf8"));
sb.append("&key=" + API_KEY);
URL url = new URL(sb.toString());
//Log.e("url", url.toString());
System.out.println("URL: "+url);
System.out.println("******************************* connexion au serveur *****************************************");
//Log.e("nous sommes entrai de test la connexion au serveur", "test to connect to the api");
conn = (HttpURLConnection) url.openConnection();
InputStreamReader in = new InputStreamReader(conn.getInputStream());
// Load the results into a StringBuilder
int read;
char[] buff = new char[1024];
while ((read = in.read(buff)) != -1) {
jsonResults.append(buff, 0, read);
}
System.out.println("le json result"+jsonResults.toString());
} catch (MalformedURLException e) {
//Log.e(LOG_TAG, "Error processing Places API URL", e);
return resultList;
} catch (IOException e) {
//Log.e(LOG_TAG, "Error connecting to Places API", e);
return resultList;
} finally {
if (conn != null) {
conn.disconnect();
}
System.out.println("******************************* fin de la connexion*************************************************");
}
try {
// Create a JSON object hierarchy from the results
//Log.e("creation du fichier Json", "creation du fichier Json");
System.out.println("fabrication du Json Objet");
JSONObject jsonObj = new JSONObject(jsonResults.toString());
//JSONArray predsJsonArray = jsonObj.getJSONArray("html_attributions");
JSONObject result = jsonObj.getJSONObject("result").getJSONObject("geometry").getJSONObject("location");
System.out.println("la chaine Json "+result);
Double longitude = result.getDouble("lng");
Double latitude = result.getDouble("lat");
System.out.println("longitude et latitude "+ longitude+latitude);
resultList = new ArrayList<Double>(result.length());
resultList.add(result.getDouble("lng"));
resultList.add(result.getDouble("lat"));
System.out.println("les latitude dans le table"+resultList);
} catch (JSONException e) {
///Log.e(LOG_TAG, "Cannot process JSON results", e);
}
return resultList;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
PlacesDetails pl = new PlacesDetails();
ArrayList<Double> list = new ArrayList<Double>();
list = pl.placeDetail("ChIJbf7h4osSYRARi8SBR0Sh2pI");
System.out.println("resultat de la requette"+list.toString());
}
}
Ref: - https://developers.google.com/places/android/place-details#get-place Der obige Link gibt einen Ort Objekt, das lat und lange haben wird. Das place-Objekt wird von placeid, das von der Place-Autocomplete abgerufen wird, entfernt.
Der folgende Code-Schnipsel, die für Android Google Places API verwendet für mich gearbeitet
Places.GeoDataApi.getPlaceById(mGoogleApiClient, placeId)
.setResultCallback(new ResultCallback<PlaceBuffer>() {
@Override
public void onResult(PlaceBuffer places) {
if (places.getStatus().isSuccess()) {
final Place myPlace = places.get(0);
LatLng queriedLocation = myPlace.getLatLng();
Log.v("Latitude is", "" + queriedLocation.latitude);
Log.v("Longitude is", "" + queriedLocation.longitude);
}
places.release();
}
});
Besuchen Google Places API for Android für eine vollständige Liste der Methoden, um Daten von einem Ort zum Abrufen
Places.GeoDataApi.getPlaceById(mGoogleApiClient, placeId)
.setResultCallback(new ResultCallback<PlaceBuffer>() {
@Override
public void onResult(PlaceBuffer places) {
if (places.getStatus().isSuccess() && places.getCount() > 0) {
final Place myPlace = places.get(0);
Log.i(TAG, "Place found: " + myPlace.getName());
LatLng latlangObj = myPlace.getLatLng();
Log.v("latitude:", "" + latlangObj.latitude);
Log.v("longitude:", "" + latlangObj.longitude);
} else {
Log.e(TAG, "Place not found");
}
places.release();
}
});
Verwenden Sie diese Methode für lat und lang von placeid bekommen.
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == Constant.REQUEST_LOCATION_CODE) {
Place place = PlaceAutocomplete.getPlace(this, data);
if (place != null) {
LatLng latLng = place.getLatLng();
mStringLatitude = String.valueOf(latLng.latitude);
mStringLongitude = String.valueOf(latLng.longitude);
EditTextAddress.setText(place.getAddress());
}
}
}
Mit dem obigen Code können Sie die LatLng sowie die Adresse String erhalten. Verwenden Sie den LatLng wo immer Sie wollen.
- 1. Get Straße Adresse bei lat/lang Paar
- 2. Falsche LAT/LNG von API zurückgegeben
- 3. Fläche/Grenze lat lange von einem Ort eines bestimmten Gebiets
- 4. Geokodierungs-API von Google (Stadt => lang, lat)
- 5. Get Gps Ort (lang, lat) und Zeit in dieser Android-Anwendung
- 6. Geolocation - wie man Stadt von lang und Lat
- 7. Holen Sie sich zwischen lat lang von zwei lat lang und Richtung
- 8. Adresse zu Geolocation lat/lang
- 9. Senkrechte Linie in lat/lang
- 10. Geolocation nächstgelegenen Standort (lat, lang) von meiner Position
- 11. Projizieren lang/lat mit mehreren UTM Zonen
- 12. Wann wird das Objekt von einem get zurückgegeben?
- 13. Google Maps api platziert keine Markierung an einem geeigneten Ort
- 14. Android: Lat/lang für zurückgeworfenen WIFI-Scan bekommen?
- 15. Lat lang zu Minuten und Sekunden?
- 16. Get lat und lng von Google mit Unity WWW Klasse
- 17. Get State Center-Koordinaten von Geocoder API
- 18. Get Lat. Lon von iPhone Foto-Bibliothek Fotos
- 19. Get lat/lng/Zoom/Gieren/Pitch von Google Street View
- 20. berechnen Abstand zwischen einem Ort und einer Liste von Orten
- 21. Ziel C - DMS zu LAT LANG (Süden und Osten) konvertieren
- 22. Wie man Bevölkerung basiert auf Lat und lang von jedem möglichem Standort in google Karte erhält
- 23. Holen Ort von Google Places API-ID mit
- 24. Google Places Autocomplete-API-Verbrauch
- 25. Speicher von XML-Datei von einem Ort an einem anderen Ort mit XML-Dokument
- 26. erhalten mehr als fünf Ergebnisse von Google Map AutoComplete API
- 27. Erhalten Sie eine WOEID von Lat, Long mit Yahoos API
- 28. OpenLayers-Containerposition von lat/long
- 29. jQueryUI Autocomplete - wenn keine Ergebnisse zurückgegeben werden
- 30. Android Maps v2 API ... So berechnen Sie die Entfernung zwischen zwei Standorten (Lat, lang)
Geocoder verwenden. Siehe: http://developer.android.com/reference/android/location/Geocoder.html – shyam
Aktuelle API erlaubt es nicht, es mit einer Anfrage zu tun, wie es mit Web-API möglich ist. Bitte update https://issuetracker.google.com/issues/35828699, um Koordinaten anzufordern, die in der Vorhersageantwort exponiert sind. – AlexKorovyansky