使用Circle getBounds()和contains()时出错

时间:2017-04-24 19:00:09

标签: leaflet leaflet.draw

我在尝试运行getBounds()和包含Circle形状的()时收到以下错误。

leaflet.js:7 Uncaught TypeError: Cannot read property 'layerPointToLatLng' of undefined

我可以将它与其他形状一起使用,但圆圈很顽固。我从另一个问题尝试了这个solution,但没有成功。

这里是我对多边形和矩形形状的代码:

drawnLayers.eachLayer(function(l) {
  if (type == 'circle') {

    // console.log(l.getBounds().contains(layer.getBounds()));

  } else {
    if (l.getBounds().contains(layer.getBounds())) {
      isDonut = true;

      l._latlngs.push(layer.getLatLngs());
      l.redraw();

      $('#map-info').append("<br>New Polygon: <pre>" +
        JSON.stringify(l.getLatLngs(), null, 2) + '</pre>');
    }
  }
});

1 个答案:

答案 0 :(得分:0)

l.getBounds().contains(layer.getBounds())

getBounds()是一种仅针对传单0.7.x中的polyline / polygon / rectangle的方法

自版本1.0.0起添加到圆形状中 - 请参阅leaflet reference versions

要解决此问题,您有2个选项

  1. getRadius()等圈子使用其他方法,如果形状包含其他形状,请自行计算
  2. 升级您的传单库
  3. 就个人而言,我会将传单库升级到1.0.3(我做的很简单,我的项目没有任何兼容性问题)