javascript - 在矩形、圆形和多边形内填充标记

标签 javascript jquery leaflet mapbox

我的要求是在用户绘制的区域内填充标记,该区域可以是圆形、矩形、多边形。

这就是我目前正在尝试的:-

map.on('draw:created', function(e) {
    var type = e.layerType, layer = e.layer;
    var bounds =  layer.getBounds();
});

现在我使用这些 bounds(southWest, northEast) latlongs 来虚拟创建行列间距,然后相应地填充标记。

问题:-

  • 上述方法适用于矩形,所有标记都填充在矩形内。
  • 不适用于圆形和多边形。标记也填充在圆和多边形之外(附近)。 我猜 getBounds() 方法是通过创建一个接触圆和多边形所 Angular 框来给出边界或计算面积。

关于如何严格在圆和多边形的内部或边界上填充标记有什么建议吗?

提前致谢。

最佳答案

按照@kmandov 的建议通过 PIP 解析多边形内的点,并通过以下过程解析圆:-

  • 获取点的经纬度。
  • 获取圆心的经纬度。
  • 对上述两个经纬度中的任何一个运行 distanceTo() 方法,并将第二个经纬度作为参数传递。
  • 检查距离是否大于圆的半径。
  • 如果它大于半径,则该点在圆外,否则在圆内。

这是我使用的条件:

if (customMarker.getLatLng().distanceTo(myCircle.getLatLng()) <= myCircle.getRadius()) {
          console.log("Marker is inside circle");
}else{
         console.log("Marker is outside circle");
}

关于javascript - 在矩形、圆形和多边形内填充标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31723201/

相关文章:

javascript - 将变量从 app.js 传递到 index.html

javascript - 在 jsfiddle 上练习 lodash

jquery - 使用asp.net更改jquery ajax中的css

Javascript:拖动div

javascript - 使图像叠加的 map View 适合容器传单的大小

javascript - Jquery/Javascript : Buttons added dynamically with javascript do not work

javascript - AngularJS - 如果 ng-option 为空,则隐藏 <select> 元素

python - Flask - 在 Ajax/JQuery 中无需重定向即可更新页面内容

javascript - 清除标记层(传单)

javascript - 有什么方法可以根据其内容塑造 svg 容器?