Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google maps 如何对Google maps多边形中的点进行排序,使线不会交叉?_Google Maps_Sorting_Polygon_Convex Hull - Fatal编程技术网

Google maps 如何对Google maps多边形中的点进行排序,使线不会交叉?

Google maps 如何对Google maps多边形中的点进行排序,使线不会交叉?,google-maps,sorting,polygon,convex-hull,Google Maps,Sorting,Polygon,Convex Hull,我正在尝试制作一张地图,用户可以在地图上勾勒出他们想要的任何形状。但我遇到了一个问题,用户可以选择点,使多边形的线交叉,并排除我想包括的区域 要了解我在说什么,请转到并采取以下步骤: 单击4个点以形成4个角 盒子的形状 在4个选项之间单击 你刚才提出的进一步的观点 定义长方体的周长 单击完成 您应该看到如下内容: 有没有一个简单的方法来解决这个问题,或者我基本上是在处理一个“旅行推销员”式的情况?所有的逻辑都是在javascript中完成的,所以如果您想了解我是如何做到这一点的,请随意“查看源

我正在尝试制作一张地图,用户可以在地图上勾勒出他们想要的任何形状。但我遇到了一个问题,用户可以选择点,使多边形的线交叉,并排除我想包括的区域

要了解我在说什么,请转到并采取以下步骤:

  • 单击4个点以形成4个角 盒子的形状
  • 在4个选项之间单击 你刚才提出的进一步的观点 定义长方体的周长
  • 单击完成
  • 您应该看到如下内容:


    有没有一个简单的方法来解决这个问题,或者我基本上是在处理一个“旅行推销员”式的情况?所有的逻辑都是在javascript中完成的,所以如果您想了解我是如何做到这一点的,请随意“查看源代码”。

    凸面外壳可能包括用户希望排除的区域。这是另一种方法,可能会得到更令人满意的结果。检查每一条线,看哪一条线交叉(有很多方法)。然后反转出现在这两条线之间的点的子序列

    例如,假设给定点A-B-C-D-E-F-A,其中B-C和E-F相交。您可以通过反转子序列C..E来取消交叉,从而生成A-B-E-D-C-F-A


    无论如何,这都是值得尝试的。

    我在过去解决了一个类似的问题,遇到了Jeffrey提到的一个问题,即不知道用户期望的确切形状。我最终解决了这个问题,要求用户选择他们希望新点介于两者之间的两点。它需要更多的点击(3对1),但用户完全可以控制他们想要的形状。如果你感兴趣的话,我可能仍然有我在某处使用过的代码(它是谷歌地图的代码)。

    它不是凸面外壳

    想象一下,如果你在两条线交叉处附近的“林菲尔德橡树”停车。凸面外壳将跳过这一点,并在“国际”和“82”之间画一条直线

    您要做的是确定每个新点是否在由现有点形成的多边形内-如果是,则需要打断最近的多边形边并将新点插入该边。 有关多边形中的点测试,请参见