Leaflet:检查对象是路径还是标记

3

我有以下代码,使用Mapbox.js(当然是建立在Leaflet.js上的)将GeoJSON图层添加到地图中:

var orgLayer = L.geoJson(boundaries, {
    onEachFeature: onEachFeature
});
this.layerGroup.addLayer(orgLayer);

function onEachFeature(feature, layer) {
    layer.on('click', zoomToFeature, _this);
}
function zoomToFeature(e) {
    this.map.fitBounds(e.target.getBounds());
}

我遇到的问题是GeoJSON可能由多边形或点组成,因此Leaflet将图层呈现为路径或标记。当它是多边形(路径)时,这一切都很好。当它是点(标记)时,代码在e.target.getBounds()上失败。
这是可以理解的,因为在Leaflet中,getBounds只是Path的一个方法,而不是Marker的方法。我猜对于Marker,我可以使用e.target.getLatLng()
然而,我该如何调整我的代码以检查目标是标记还是路径,并使用正确的方法?
1个回答

10
你可以编写一些代码,使用instanceof来检查图层是否是L.Path或L.Marker类的实例。
例如:
if (layer instanceof L.Marker) {
    //do something
} else if (layer instanceof L.Path) {
    //do something else
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接