javascript - puntos - marcadores multiples desde una base de datos en google maps
Geocodificación con Google Maps API: actualización del marcador existente en lugar de agregar otro (1)
- Haz que el marcador sea global.
- Verifique si existe antes de crear uno nuevo.
- si existe use .setPosition para moverlo a la nueva ubicación
- si no existe, crea un marcador en la ubicación deseada.
Ejemplo que hace algo parecido a lo que quieres
fragmento de código de trabajo:
var map = null;
var marker = null;
var geocoder = new google.maps.Geocoder();
var infowindow = new google.maps.InfoWindow({pixelOffset: new google.maps.Size(0,-34)});
function initialize() {
map = new google.maps.Map(document.getElementById(''map-canvas''), {
center: new google.maps.LatLng(42, -85),
zoom: 4
});
}
function codeAddress() {
var address = document.getElementById(''address'').value;
geocoder.geocode({
''address'': address
}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
content = results[0].formatted_address;
infowindow.setContent(content);
if (marker && marker.setPosition) {
marker.setPosition(results[0].geometry.location);
} else {
marker = new google.maps.Marker({
map: map,
icon: {
url: ''http://maps.google.com/mapfiles/arrow.png'',
anchor: new google.maps.Point(10, 34)
},
position: results[0].geometry.location
});
google.maps.event.addListener(marker, ''click'', function(evt) {
infowindow.open(map);
});
}
infowindow.setPosition(results[0].geometry.location);
infowindow.open(map);
} else {
alert(''Your search was not successful for the following reason: '' + status);
}
});
}
google.maps.event.addDomListener(window, ''load'', initialize);
html,
body,
#map-canvas {
height: 500px;
width: 500px;
margin: 0px;
padding: 0px
}
<script src="https://maps.googleapis.com/maps/api/js?v=3"></script>
<input id="address" value="New York, NY" />
<input id="geocode" type="button" value="Find" onclick="codeAddress()" />
<div id="map-canvas"></div>
Cómo, al geocodificar, puede simplemente mover un marcador existente al resultado de un nuevo resultado de geocodificación.
Tomemos este ejemplo:
- Cuando se carga el mapa, aparece un marcador
- Cuando alguien geocodifica, el marcador se mueve hacia el resultado
- El marcador es arrastrable, por lo que el usuario puede mover aún más el marcador (si así lo desean)
- Quizás quieran volver a geocodificar una ubicación, por lo que el nuevo resultado debería mover automáticamente el marcador existente.
En esta muestra:
https://google-developers.appspot.com/maps/documentation/javascript/examples/geocoding-simple
... se dibuja un nuevo marcador para cada nuevo código geográfico.
¿Tiene sentido?
¡¡¡Gracias!!!
-metro