Tôi đang cố gắng tìm ra cách kích hoạt các sự kiện theo cách thủ công cho các đa giác Leaflet (được nạp thông qua GeoJSON).Làm thế nào để kích hoạt các sự kiện trên các đa giác bản đồ của Leaflet?
Tóm lại, tôi có một bản đồ Leaflet với nhiều đa giác. Tôi cũng có một siêu liên kết thông thường bên ngoài bản đồ mà khi được nhấp, nên kích hoạt sự kiện di chuột (hoặc bất kỳ sự kiện nào thực sự) trên một đa giác cụ thể.
Làm cách nào để gán ID cho tất cả các đa giác của mình để tôi có thể liên kết (các) siêu kết nối với sự kiện của đa giác cụ thể? Hay đó là cách hợp lý nhất để làm điều này?
Cuối cùng, tôi đang cố gắng tạo bản đồ với nhiều đa giác cùng với một bảng văn bản HTML nhãn được liên kết với mỗi đa giác. Khi nhấp vào văn bản bảng HTML, tôi muốn kích hoạt các sự kiện trên đa giác bản đồ (và ngược lại). Tôi chỉ không biết cách tham khảo mỗi đa giác.
Đây là HTML rất đơn giản của tôi:
<body>
<div id="map" style="height: 550px; width:940px"></div>
<a href="#" id="testlink">Click to trigger a specific polygon mouseover event</a>
</body>
Đây là JS rất đơn giản của tôi:
$(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ó cách nào để thực hiện điều đó mà không cần đi sâu vào các thuộc tính nền không? – sidonaldson
Tôi tin rằng điều này cần cập nhật với API mới, featureparse dường như không kích hoạt và addGeoJSON dường như không phải là chức năng – masterchief
Cảm ơn bạn rất nhiều Tôi đã tìm kiếm một cái gì đó tương tự như thế này .. map._layers ['polyindex0' .fire ('click'); – EvilInside