使用产品:iserver 11c、iclient for leaflet 11i
问题详细描述:我在iserver中发布了多个矢量地图服务,并在leaflet中进行叠加。需求是通过点击鼠标获得对应要素的属性信息。
我的思路是通过鼠标点击获得最顶部图层,并将图层名称传递进查询服务中。
但获取不到最顶部的图层,想请教一下有什么其他方法么?
代码如下:
var topLayer;
var layers = [];
map.eachLayer(function(layer) {
if (layer instanceof L.LayerGroup) {
layers = layers.concat(layer.getLayers());
} else {
layers.push(layer);
}
});
map.on('click', function(e) {
var pixel = map.project(e.latlng);
topLayer = null;
for (var i = layers.length - 1; i >= 0; i--) {
if (layers[i].options.interactive && map.getBounds().contains(layers[i].getBounds())) {
var p = map.project(layers[i].getLatLng());
if (pixel.x > p.x && pixel.y > p.y) {
topLayer = layers[i];
break;
}
}
}
console.log(topLayer);
});