Estoy tratando de averiguar cómo activar eventos manualmente para los polígonos de Leaflet (cargados a través de GeoJSON).¿Cómo desencadenar eventos en los polígonos de mapa de folletos?
En pocas palabras, tengo un mapa de folleto con numerosos polígonos. También tengo un hipervínculo normal fuera del mapa que, al hacer clic, debe desencadenar un evento mouseover (o cualquier evento real) en un polígono particular.
¿Cómo asigno identificaciones a todos mis polígonos para que pueda enlazar hipervínculos al evento de un polígono específico? ¿O es esa la forma más lógica de hacer esto?
En última instancia, estoy tratando de crear un mapa con numerosos polígonos junto con una tabla HTML de etiquetas de texto que están asociadas a cada polígono. Al hacer clic en el texto de la tabla HTML, me gustaría activar eventos en los polígonos del mapa (y viceversa). Simplemente no sé cómo hacer referencia a cada polígono.
Aquí es mi HTML muy simplificada:
<body>
<div id="map" style="height: 550px; width:940px"></div>
<a href="#" id="testlink">Click to trigger a specific polygon mouseover event</a>
</body>
Aquí está mi JS muy simplificadas:
$(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
});
});
¿Hay alguna manera de hacerlo sin profundizar en las propiedades de fondo? – sidonaldson
Creo que esto necesita actualizarse con la nueva API, featureparse no parece disparar y agregarGeoJSON no parece ser una función – masterchief
Muchas gracias Estaba buscando algo similar a esto .. map._layers ['polyindex0' ] .fire ('clic'); – EvilInside