2014-11-05 48 views
-1

我有一个地图上有〜50个标记(谷歌地图API v3),我想点击一个随机点,并得到围绕它的3个标记。
我发现this的例子,但它并不真正做我想单独的事情。哪3个标记创建一个包含指定点的三角形?

这里是我的标记的图像和我想要做到: [IMAGE]

根据图像; 当我点击红色点时,脚本应该返回这三个与黄线连接的标记的坐标。 蓝点和绿线相同。

它必须是最窄,最小的三角形。

我试过找到最接近的3个标记,它适用于大多数情况,但并不包括所有。 (就像在有近距离的同一行中有3个标记一样)。

有什么建议吗?提前致谢!

编辑 ps。如果有帮助,我可以使用PHP和Ajax调用。

+0

标记是否固定? – 2014-11-05 10:14:02

+0

@davidstrachan我正在用PHP打印它们为Javascript数组,然后循环并放上地图。他们可能会保持一段时间的固定,但他们会改变或新的会不时增加。我想答案是否定的。 – semihcosu 2014-11-05 10:53:48

回答

-1

它使用PHP,通过循环所有标记坐标。

首先我检查点是否使用如果面积比上一个小this class 然后检查了三角形。

/* 3 foreach loops{ */ 

$pointLocation = new pointLocation(); 
$polygon = array($A['y'].' '.$A['x'], $B['y'].' '.$B['x'], $C['y'].' '.$C['x'], $A['y'].' '.$A['x']); 
$point = $P['y'].' '.$P['x']; 
if(($pointLocation->pointInPolygon($point, $polygon)=='inside' || $pointLocation->pointInPolygon($point, $polygon) == 'vertex')) 
// Here I check the area using another function and save this coordinates if this is the smallest triangle. Then it continues to loop 

/* } */ 

这可能不是最有效的方法,但除非我找到另一种方式,否则这将完成这项工作。

相关问题