javascript - 给定随机坐标点,构造确定边缘点的多边形

标签 javascript polygon leaflet minecraft

我在 Leaflet map 上有一组无组织的点,在我的实现中,这些点代表来 self 的 Minecraft 服务器的 map 上的领土节点(可在以下位置查看:http://loka.minecraftarium.com/map)。目前,我的实现只取点并使用 leaflet 围绕点画一个圆来粗略指示控制区域。

然而,这有点难看,并且不能代表所需的最终结果,即根据给定一组数据的边缘点绘制多边形区域。然而,由于点的无组织性质,我没有简单的方法来声明这些点上的“边缘点”,因为它们将源于原始来源(城镇中心)并随着玩家扩展他们的领土而消失。

我的问题:有没有一种方法可以给定一组这些点来迭代它们以自动确定边缘点和某种顺序,以便然后提供 Leaflet 多边形位置并绘制代表控件的多边形区域,而不仅仅是一堆点周围画有相交的圆圈。

我看过一些关于鞋带公式的资料,但我不确定是否/如何将点放在“内部”区域。

以下是当前结果: Current Result

期望的结果(当然里面没有圆圈) Desired Result (without the circles inside of course)

非常感谢!

最佳答案

我是从用户 3413723 那里得到的。它适用于 lat/lng 对象。 https://npm.runkit.com/hull.js 这就是我在 Google map 上使用它的方式:

// in main.js
Hull = require("hull.js");

// ... results is my object array with lat/lng properties
var hull    = Hull(results, 50, ['.lng', '.lat']),
    hullMap = new google.maps.Polygon({
        paths: hull,
        strokeColor: '#FF0000',
        strokeOpacity: 0.8,
        strokeWeight: 2,
        fillColor: '#FF0000',
        fillOpacity: 0.35
    });

hullMap.setMap(map);

关于javascript - 给定随机坐标点,构造确定边缘点的多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25914687/

相关文章:

java - 检测多个多边形交叉点(java)

javascript - LeafletJS 面向对象的最佳方法

javascript - 如何用 ReactJS 中的变量替换查询参数中的字符串

Javascript - 正则表达式问题

javascript - 帮助我理解 DOM 中的对象

polygon - 单调多边形的 Delaunay 三角剖分

java - 创建多边形时如何在顶点之间添加n个点

javascript - 在传单上用 d3 覆盖圆圈会导致位置不正确

javascript - 字符串替换为多个破折号和空格

javascript - angularjs morris 指令从 json 休息创建图表