我有一张带有约50个标记的地图(Google maps api v3),我想点击一个随机点,然后找到它周围的3个标记。
我找到了 this 的例子,但它并没有真正做我想要的事情。
这是我的标记的图像以及我想要完成的事情: [IMAGE]
根据图像; 当我点击红点时,脚本应该返回那些用黄线连接的3个标记的坐标。 蓝点和绿线相同。
它必须是最窄,最小的三角形。
我已经尝试找到最接近的3个标记,它适用于大多数情况,但并未涵盖所有情况。 (就像在同一行中有3个标记并且有近距离时。)
有什么建议吗?提前谢谢!
修改 PS。如果它有帮助,我可以使用PHP和ajax调用。
答案 0 :(得分:-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
/* } */
这可能不是最有效的方式,但除非我找到另一种方式,否则这将完成工作。