【问题标题】:Which 3 marker creates a triangle that contains specified point?哪 3 个标记创建一个包含指定点的三角形?
【发布时间】:2014-11-05 09:33:26
【问题描述】:

我有一张带有大约 50 个标记的地图(Google maps api v3),我想单击一个随机点并获取围绕它的 3 个标记。
我找到了 this 示例,但它并不能单独做我想做的事情。

这是我的标记的图像以及我想要完成的任务: [IMAGE]

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

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

我尝试找到最接近的 3 个标记,它适用于大多数情况,但不能涵盖所有情况。 (就像在同一行中有 3 个标记范围很近时一样。)

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

编辑 附言。如果有帮助,我可以将 PHP 与 ajax 调用一起使用。

【问题讨论】:

  • 标记是固定的吗?
  • @davidstrachan 我用 PHP 将它们打印为 Javascript 数组,然后循环并放在地图上。它们可能会保持固定一段时间,但它们会被更改或不时添加新的。我猜答案是否定的。

标签: javascript php ajax google-maps google-maps-api-3


【解决方案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

/* } */

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

【讨论】:

    猜你喜欢
    • 2014-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 2015-03-21
    • 2014-06-28
    相关资源
    最近更新 更多