Marcador de clúster Google Maps usando Geocoder
-
25-10-2019 - |
Pregunta
Usando estos datos
var data = {
'address': [
{
'address': '7970 GLENTIES Ln'
},
{
'address': '8022 Caminito Mallorca'
},
{
'address': '2750 Wheatstone St # 26'
},
{
'address': '335 49th St'
}
]
};
Me las arreglo para marcarlos, pero no pude agruparlos. debajo del código que he usado.
var markerArray = [];
function initialize() {
geocoder = new google.maps.Geocoder();
var center = new google.maps.LatLng(37.4419, -122.1419);
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 3,
center: center,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var address;
var markers = [];
for (var level in data) {
for (var i = 0; i < data[level].length; i++) {
// var dataPhoto = data.photos[i];
var dataAdd = data[level][i];
// alert(dataAdd.address);
geocoder.geocode({ 'address': dataAdd.address}, function(results){
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
markerArray[i] = marker;
});
}
}
var markerCluster = new MarkerClusterer(map, markerArray);
}
google.maps.event.addDomListener(window, 'load', initialize);
¿Cómo puedo agruparlos? Parece que el MarkerClusterer no funciona o no lo sé.
Solución
Debido a que la función de geocodificación es async, debe crear el clusterer de marcador antes de que se hayan creado los marcadores.
Lo que debe hacer es crear el MarkerClusterer antes de comenzar a Geocoding y luego en lugar de agregar a una matriz de marcadores, puede agregarlo al MarkerClusterer.
Otros consejos
Sí, la función de geocodificación es async. Por lo tanto, puede agregar marcador en el clúster más adelante usando el método addmarker ().
var markerCluster = new MarkerClusterer(map, markerArray);
for (var level in data) {
for (var i = 0; i < data[level].length; i++) {
var dataAdd = data[level][i];
geocoder.geocode({ 'address': dataAdd.address}, function(results){
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
markerArray[i] = marker;
markerCluster..addMarker(marker);
});
}
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow