Sto cercando di capire come attivare manualmente gli eventi per i poligoni Leaflet (caricati tramite GeoJSON).Come attivare gli eventi sui poligoni della mappa degli opuscoli?
In breve, ho una mappa Leaflet con numerosi poligoni. Ho anche un normale collegamento ipertestuale al di fuori della mappa che, quando si fa clic, dovrebbe attivare un evento mouseover (o qualsiasi evento in realtà) su un particolare poligono.
Come assegnare ID a tutti i miei poligoni in modo che sia possibile associare i collegamenti ipertestuali a un evento di un poligono specifico? O è anche il modo più logico per farlo?
In definitiva, sto cercando di creare una mappa con numerosi poligoni insieme a una tabella HTML di etichette di testo associate a ciascun poligono. Facendo clic sul testo della tabella HTML, vorrei attivare eventi sui poligoni della mappa (e viceversa). Non so come fare riferimento a ciascun poligono.
Ecco il mio HTML molto semplificata:
<body>
<div id="map" style="height: 550px; width:940px"></div>
<a href="#" id="testlink">Click to trigger a specific polygon mouseover event</a>
</body>
Ecco la mia JS molto semplificate:
$(document).ready(function() {
// build the map and polygon layer
function buildMap(data) {
var map = new L.Map('map');
var cloudmadeUrl = 'http://{s}.tile.cloudmade.com/***yourkeyhere***/66267/256/{z}/{x}/{y}.png',
cloudmadeAttribution = '',
cloudmade = new L.TileLayer(cloudmadeUrl, {maxZoom: 18, attribution: cloudmadeAttribution});
var mapLoc = new L.LatLng(43.675198,-79.383287);
map.setView(mapLoc, 12).addLayer(cloudmade);
var geojsonLayer = new L.GeoJSON(null, {});
geojsonLayer.on("featureparse", function (e){
// apply the polygon style
e.layer.setStyle(polyStyle);
(function(layer, properties) {
layer.on("mouseover", function (e) {
// change the style to the hover version
layer.setStyle(polyHover);
});
});
layer.on("mouseout", function (e) {
// reverting the style back
layer.setStyle(polyStyle);
});
layer.on("click", function (e) {
// do something here like display a popup
console.log(e);
});
})(e.layer, e.properties);
});
map.addLayer(geojsonLayer);
geojsonLayer.addGeoJSON(myPolygons);
}
// bind the hyperlink to trigger event on specific polygon (by polygon ID?)
$('#testlink').click(function(){
// trigger a specific polygon mouseover event here
});
});
C'è un modo per farlo senza scavare nelle proprietà di sfondo? – sidonaldson
Credo che questo debba essere aggiornato con la nuova API, featureparse non sembra sparare e aggiungereGeoJSON non sembra essere una funzione – masterchief
Grazie mille stavo cercando qualcosa di simile a questo .. map._layers ['polyindex0' ] .fire ('click'); – EvilInside