Leaflet:检查对象是Path还是Marker

时间:2015-06-15 16:31:54

标签: javascript leaflet

我有以下代码使用Mapbox.js将GeoJSON图层添加到地图中(当然这是基于Leaflet.js构建的):

fragmentTransaction.addToBackStack("NewFragment") 

我遇到的问题是GeoJSON可能包含多边形或点,因此Leaflet将图层渲染为路径或标记。当它是多边形(路径)时,一切正常。当它是Points(Markers)时,代码在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()); } 上失败。

这是可以理解的,因为e.target.getBounds()只是Leaflet中Path的方法,而不是Marker上的方法。我想Marker我可以使用getBounds

但是,如何调整我的代码以检查目标是标记还是路径,并使用正确的方法?

1 个答案:

答案 0 :(得分:8)

您可以编写一些涉及使用instanceof来检查图层是否是L.Path或L.Marker类的实例的代码。

例如:

if (layer instanceof L.Marker) {
    //do something
} else if (layer instanceof L.Path) {
    //do something else
}