google-maps-api-3 - mis - obtener coordenadas google maps android
Api del mapa de Google obtiene la latitud y la longitud de autocompletar sin mapa (7)
La API de Google Places también proporciona una API REST que incluye la función Autocompletar. https://developers.google.com/places/documentation/autocomplete
Pero la recuperación de datos del servicio debe usarse para un mapa.
Estoy tratando de obtener la latitud y la longitud de autocompletar api google map sin mostrar el mapa. En mi script, el autocompletado funciona bien, pero no puedo obtener la latitud y la longitud.
<script type="text/javascript">
function initialize() {
var options = {
types: [''(cities)'']
};
var input = document.getElementById(''searchTextField'');
var autocomplete = new google.maps.places.Autocomplete(input, options);
}
google.maps.event.addDomListener(window, ''load'', initialize);
var geocoder = new google.maps.Geocoder();
var address = autocomplete;
geocoder.geocode( { ''address'': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var latitude = results[0].geometry.location.lat();
var longitude = results[0].geometry.location.lng();
alert(latitude);
}
});
</script>
No puede obtener la latitud / longitud de la API de autocompletar ya que los datos generados por google desde esa API no contienen campo de latitud y logitud. Ejemplo:-
{
"predictions" : [
{
"description" : "IIT Mumbai, Mumbai, Maharashtra, India",
"id" : "ac3235cda973818a89b5fe21ad0f5261ac9b6723",
"matched_substrings" : [
{
"length" : 10,
"offset" : 0
}
],
"reference" : "CkQ0AAAAHWg-RSngiYHHdz_yqyFKmfSoBwT-_PW0k8qQDhsbiVrk7BlPHCyJb58OthledMUTGYS5Vhec1Zj2L7w9Rq0zDxIQrbn05RX1QgWHkSXsmTk1TRoU45APW2BBRIUsA3t6XBy_8s0BPPA",
"terms" : [
{
"offset" : 0,
"value" : "IIT Mumbai"
},
{
"offset" : 12,
"value" : "Mumbai"
},
{
"offset" : 20,
"value" : "Maharashtra"
},
{
"offset" : 33,
"value" : "India"
}
],
"types" : [ "establishment", "geocode" ]
}
],
"status" : "OK"
}
Puede usar la API de Google para obtener la longitud y la latitud de su dirección. Como ya dijiste, debes implementar un campo oculto donde el resultado debe insertarse. Luego puede guardar la ubicación junto con las coordenadas.
Recientemente implementé esta función en uno de mis proyectos:
function getLatLngFromAddress(city, country){
var address = city +", "+ country;
var geocoder = new google.maps.Geocoder();
geocoder.geocode( { ''address'': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
$(''#latitude'').val(results[0].geometry.location.Pa);
$(''#longitude'').val(results[0].geometry.location.Qa);
} else {
console.log("Geocode was not successful for the following reason: " + status);
}
});
}
Puede obtener desde la misma API sin ninguna llamada adicional de API o url.
HTML
<input class="wd100" id="fromInput" type="text" name="grFrom" placeholder="From" required/>
Javascript
var input = document.getElementById(''fromInput'');
var defaultBounds = new google.maps.LatLngBounds(
new google.maps.LatLng(-33.8902, 151.1759),
new google.maps.LatLng(-33.8474, 1512631)
)
var options = {
bounds: defaultBounds
}
var autocomplete = new google.maps.places.Autocomplete(input, options);
var searchBox = new google.maps.places.SearchBox(input, {
bounds: defaultBounds
});
google.maps.event.addListener(searchBox, ''places_changed'', function() {
var places = searchBox.getPlaces();
console.log(places[0].geometry.location.G); // Get Latitude
console.log(places[0].geometry.location.K); // Get Longitude
//Additional information
console.log(places[0].formatted_address); // Formated Address of Place
console.log(places[0].name); // Name of Place
if (places.length == 0) {
return;
}
var bounds = new google.maps.LatLngBounds();
console.log(bounds);
});
}
Puedes usar el código a continuación.
<script src="http://maps.googleapis.com/maps/api/js?libraries=places" type="text/javascript"></script>
<script type="text/javascript">
function initialize() {
var input = document.getElementById(''searchTextField'');
var autocomplete = new google.maps.places.Autocomplete(input);
google.maps.event.addListener(autocomplete, ''place_changed'', function () {
var place = autocomplete.getPlace();
document.getElementById(''city2'').value = place.name;
document.getElementById(''cityLat'').value = place.geometry.location.lat();
document.getElementById(''cityLng'').value = place.geometry.location.lng();
//alert("This function is working!");
//alert(place.name);
// alert(place.address_components[0].long_name);
});
}
google.maps.event.addDomListener(window, ''load'', initialize);
</script>
... y esta parte está dentro de tu formulario:
<input id="searchTextField" type="text" size="50" placeholder="Enter a location" autocomplete="on" runat="server" />
<input type="hidden" id="city2" name="city2" />
<input type="hidden" id="cityLat" name="cityLat" />
<input type="hidden" id="cityLng" name="cityLng" />
Espero que ayude.
Sí tu puedes:
var place = autocomplete.getPlace();
document.getElementById(''lat'').value = place.geometry.location.lat();
document.getElementById(''lon'').value = place.geometry.location.lng();
Solo necesito:
var place = autocomplete.getPlace();
// get lat
var lat = place.geometry.location.lat();
// get lng
var lng = place.geometry.location.lng();
@Override
public void onPlaceSelected(Place place) {
LatLng autoCompleteLatLng = place.getLatLng();
newLoc = new Location("New");
newLoc.setLatitude(autoCompleteLatLng.latitude);
newLoc.setLongitude(autoCompleteLatLng.longitude);
geoLocate(newLoc);//mark it in map
}