fare clic su ascoltatore di eventi sulle icone e sulle etichette della mappa in stile

È ansible aggiungere un listener per l’evento click sulle icone e / o etichette che appaiono per le mappe in stile? Ho un modulo che consente l’inserimento di punti di interesse. Dato che lo styling di POI mostra icone e / o etichette per molti potenziali candidati, e cliccando su uno si apre una finestra in basso con informazioni sull’indirizzo, ecc. Vorrei catturare queste informazioni di indirizzo nei campi del mio modulo se l’utente fa clic su uno.

Non vi è alcun accesso basato su API ai POI.

Ma c’è una soluzione ansible.

Quando si fa clic su un PDI, viene aperto un InfoWindow. È ansible modificare il prototipo di InfoWindow per poter accedere al contenuto dell’InfoWindow senza avere un riferimento all’istanza di InfoWindow.

//store the original setContent-function var fx = google.maps.InfoWindow.prototype.setContent; //override the built-in setContent-method google.maps.InfoWindow.prototype.setContent = function (content) { //when argument is a node if (content.querySelector) { //search for the address var addr = content.querySelector('.gm-basicinfo .gm-addr'); if (addr) { alert(addr.textContent); //leave the function here //when you don't want the InfoWindow to appear } } //run the original setContent-method fx.apply(this, arguments); }; 

Demo: http://jsfiddle.net/doktormolle/Vkf43/

Nota: i selettori per la finestra in ingresso non sono documentati, potrebbero cambiare in futuro

Mi rendo conto che si tratta di un vecchio Q, ma questo è stato risolto di recente nell’API di Maps. Ora puoi ascoltare gli eventi di clic sulle icone delle mappe.

A partire dalla versione 3.26 dovresti ascoltare l’evento “click” sull’object Map. Se l’utente fa clic su un PDI, viene generato un IconMouseEvent. Questa class estende il mouse normaleEvent e contiene una proprietà chiamata placeId. Quindi puoi controllare se l’object evento ha definito placeId. Il campo placeId contiene ovviamente un ID luogo, che puoi utilizzare con l’API di Places per ottenere maggiori informazioni sull’icona che è stata selezionata. Chiamare stop () sull’evento stesso impedirà a Maps API di mostrare la finestra delle informazioni di default.

Ho preparato una piccola demo che dimostra come acquisire l’evento click e visualizzare la finestra delle informazioni personali.

http://jsbin.com/parapex/edit?html,output