2010-04-22 21 views
7

Estoy usando Google Maps v3 y construyo en el lado del servidor una colección json de datos de ubicación. Entonces cuando lo recibo, recorro esa colección y creo un objeto marcador para cada uno de ellos.¿Cómo almaceno más información en un marcador?

Para cada uno de estos marcadores, los ato con el evento click, de modo que cuando el usuario hace clic en un marcador en el mapa, muestra una ventana de información con datos relacionados con la ubicación asociada.

Tengo una matriz para almacenar toda la ubicación obtenida del servidor que contiene los objetos json recuperados y su marcador correspondiente.

El problema es que, incluso cuando tengo una matriz que puedo referenciar o iterar, necesito no solo obtener el marcador cuando el usuario hace clic en ellos, sino también el objeto de ubicación, que almacena más información.

He intentado mantener esta matriz de objetos y hacer referencia a ella desde el objeto que llama sin éxito, porque el marcador llama a la función y no al objeto de ubicación. Así que pensé que si era posible almacenar más información en el marcador de Google Maps como usar un campo de propósito general.

Háganme saber si necesita más información.

Gracias!

Respuesta

9

Sí, gracias a JavaScript. En este lenguaje, los objetos y las tablas hash son lo mismo .

Esta es la forma en que va a crear el marcador:

var point = new google.maps.LatLng(40.70, -74.00); 
var myMarker = new google.maps.Marker({ position: point, map: map }); 

Y esto es cómo se puede añadir una propiedad más a su objeto myMarker:

myMarker.myNewField = 100; 

Viola! No es necesario mantener matrices separadas de datos relacionados. No es necesario un campo de propósito general. Simplemente invente un nuevo nombre de propiedad y estará listo.


A Survey of the JavaScript Programming Language por Douglas Crockford.

+0

¡Esto es exactamente lo que estaba buscando! ¡Muchas gracias! – Sebastian

+0

No estoy muy seguro de que esta sea una buena respuesta. ¿Qué pasa si tu myNewField colisionará con los atributos de la API de Google Maps, que se pueden agregar en el futuro? ** Este es un truco que simplemente funciona si tienes suerte, no es una solución limpia y definitiva **. – TMS

+0

@Tomas No es un truco. Los objetos son hashmaps en JavaScript. La API de Google Maps usa algunas teclas del hashmap. Podrían usar otros en versiones futuras, pero apegarse a una versión específica de la API debería evitar tales colisiones. –

Cuestiones relacionadas