2011-06-11 18 views

Respuesta

6

No he probado este código, por lo que puede haber errores tipográficos o errores, pero debería darle la idea.

En primer lugar, definir una devolución de llamada para establecer todos los marcadores al icono normal (para restablecer cualquier previamente ha hecho clic marcadores) y el icono de la corriente del marcador se ha hecho clic en el icono seleccionado:

var markerCallback = function() { 
    for (var i=0; i<arrayOfMarkers.length; i++) { 
     arrayOfMarkers[i].setIcon(normalIcon); 
    } 
    this.setIcon(selectedIcon); 
} 

A continuación, asignar la devolución de llamada el evento de clic en cada marcador así:

google.maps.event.addListener(marker, 'click', markerCallback); 

Sin duda, hay algunas mejoras de código que se podrían realizar. Por ejemplo, es posible que no desee que normalIcon, selectedIcon y arrayOfMarkers sean variables globales de la forma en que el código anterior supone que son. Y si tiene muchos marcadores, probablemente desee realizar un seguimiento del marcador previamente seleccionado en lugar de tener un bucle for que reinicie el icono en cada uno de ellos.

Pero como dije, esto debería darle la idea.

+1

Sería mucho más fácil simplemente asignar el marcador seleccionado actualmente a una variable global en lugar de ejecutar todos los marcadores cada vez :) –

+1

@Kasper: Sí, tienes razón, ¡eso sería mejor! (En mi defensa, mencioné ese problema: "Y si tiene muchos marcadores, probablemente desee realizar un seguimiento del marcador seleccionado previamente en lugar de tener un bucle' for' para restablecer el ícono en cada uno de ellos. ") – Trott

+0

Lo siento, me extrañé por completo. Solo se centró en el ejemplo de código: D –

14

Sólo en cualquier caso alguien quiere ver un ejemplo de hacer el seguimiento del marcador anterior en una variable global como Kasper ha mencionado, esto es lo que hice:

google.maps.event.addListener(marker,'click',function() { 

     if (selectedMarker) { 
      selectedMarker.setIcon(normalIcon); 
     } 
     marker.setIcon(selectedIcon); 
     selectedMarker = marker; 
    }); 

(después de ajustar selectedMarker como una variable global)

+0

¡Gracias! Funcionó :) – VishwaKumar

+0

necesitaba algunos cambios para mi caso, pero la idea es super clean man, gracias – vaskort

+0

Excelente hombre, proporcionó la mejor solución – Devz

Cuestiones relacionadas