【问题标题】:Leaflet: check if object is Path or Marker传单:检查对象是路径还是标记
【发布时间】:2015-06-15 16:31:53
【问题描述】:

我有以下代码使用 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() 上失败。

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

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

【问题讨论】:

    标签: javascript leaflet


    【解决方案1】:

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

    例如:

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

    【讨论】:

      猜你喜欢
      • 2011-11-25
      • 2014-03-09
      • 2011-10-16
      • 2013-12-10
      • 1970-01-01
      • 2019-09-09
      • 2013-03-15
      • 2011-07-19
      • 2011-03-20
      相关资源
      最近更新 更多