2010-04-22 9 views
7

Sto utilizzando Google Maps v3 e ho creato sul lato server una raccolta JSON di dati sulla posizione. Quindi, quando lo ricevo, faccio scorrere tutta la collezione e creo un oggetto marcatore per ognuno di essi.Come posso memorizzare più informazioni in un marker?

Per ciascuno di questi indicatori, li lego con l'evento click, quindi quando l'utente fa clic su un indicatore nella mappa, visualizza una finestra di informazioni con i dati relativi alla posizione associata.

Ho una matrice per memorizzare tutte le posizioni ricevute dal server che contiene gli oggetti JSON recuperati e il loro indicatore corrispondente.

Il problema è che, anche quando ho una matrice che posso fare riferimento o scorrere, ho bisogno non solo di ottenere l'oggetto marcatore quando l'utente fa clic su di essi, ma anche l'oggetto posizione, che memorizza più informazioni.

Ho cercato di mantenere questa matrice di oggetti e di riferirla dall'oggetto chiamante senza esito positivo, perché la funzione è chiamata dal marcatore e non dall'oggetto di posizione. Quindi ho pensato che fosse possibile memorizzare più informazioni nell'oggetto marcatore di google maps come se si utilizzasse un campo di interesse generale.

Per favore fatemi sapere se sono necessarie ulteriori informazioni.

Grazie!

risposta

9

Sì, è possibile grazie a JavaScript. In questo linguaggio, oggetti e hashtables sono la stessa cosa .

questo è come si sta creando il marcatore:

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

e in questo modo è possibile aggiungere una proprietà aggiuntiva al vostro myMarker oggetto:

myMarker.myNewField = 100; 

Viola! Non è necessario tenere array separati di dati correlati. Non c'è bisogno di un campo di interesse generale. Basta inventare un nuovo nome di proprietà, e sei a posto.


A Survey of the JavaScript Programming Language da Douglas Crockford.

+0

Questo è esattamente quello che stavo cercando! Grazie mille! – Sebastian

+0

Non sono sicuro che questa sia una buona risposta. Che cosa succede se myNewField si scontrerà con gli attributi di API di google maps, che potrebbero essere aggiunti in futuro? ** Questo è un hack che funziona solo se sei fortunato, non una soluzione definitiva e definitiva **. – TMS

+0

@Tomas Non è un hack. Gli oggetti sono hashmap in JavaScript. L'API di Google Maps utilizza alcune chiavi dell'hashmap. Potrebbero usarne altri nelle versioni future, ma attenersi a una versione specifica dell'API dovrebbe impedire tali collisioni. –

Problemi correlati