Es algo muy parecido a lo que habíamos visto antes () pero con diferente función:
Por campo
input: si tenemos las coordenadas, más fácil:
Código Javascript
:
Ver originalvar mi_marcador_nuevo = document.getElementById('xxx').value;
Y después lo lanzamos:
Código Javascript
:
Ver originalvar nuevomarker = new google.maps.Marker({
map: map,
position: mi_marcador_nuevo
});
Si lo que va en el input es una dirección, tenemos que acudir a geocoder: básicamente es esto
Código Javascript
:
Ver originalfunction codeAddress() {
var address = document.getElementById('xxx').value;
geocoder.geocode({
'address': address
}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
document.getElementById('xxx').value = results[0].formatted_address;
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
} else {
alert('Geocode no tuvo éxito por la siguiente razón: ' + status)
}
})
}
:
En este caso, la función
function codeAddress() es llamada desde
Código HTML:
Ver original<input type="button" value="Localizar" onclick="codeAddress()">
Los códigos que te envío son muy de memoria y pueden contener algún error.
También tienes la posibilidad de añadir un nuevo marcador por click:
Código Javascript
:
Ver originalgoogle.maps.event.addListener(map, 'click', function (event) {
geocoder.geocode({
'latLng': event.latLng
}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[0]) {
document.getElementById('xxx').value=results[0].formatted_address;
if (marker) {
marker.setPosition(event.latLng)
} else {
marker = new google.maps.Marker({
position: event.latLng,
map: map
})
}
} else {
document.getElementById('mensaje').innerHTML = 'No se encontraron resultados'
}
} else {
document.getElementById('mensaje').innerHTML = 'Geocodificación ha fallado debido a: ' + status
}
})
});
Tal vez lo más importante, es que metas tu nuevo marcador en una función aparte como te hice ya referencia.