仅在指定的圈子/区域中显示谷歌地图标记

时间:2014-08-09 17:19:59

标签: javascript php html google-maps

我只想在指定区域显示标记!例如,我想绘制半径为假设3或任意和中心(任何LatLng)的圆。然后,我需要仅在该圆圈的区域中显示标记。 我怎样才能做到这一点?有可能吗?

更新:解决我的问题

function isMarkerInArea(circle, marker)
{
   return (circle.getBounds().contains(marker.getPosition()));
};

描述:

  • circle.getBounds()返回圆圈的latLng边界
  • marker.getPosition()返回标记
  • 的latLng
  • 最后是circle.getBounds()。contains(marker.getPosition()),如果标记在圆圈内,则返回布尔值。

最后,根据返回的布尔值设置标记的可见性!

2 个答案:

答案 0 :(得分:1)

最好的方法(假设你有一系列标记)就是使用circle contains()函数。 一个例子:

function isMarkerInArea(circle, marker){
   return (circle.getBounds().contains(marker.getPosition());
};

此函数将返回boolean。如果确实如此,则设置显示标记,否则隐藏它。

答案 1 :(得分:0)

很难确切地知道你在做什么,但我会假设你有一系列标记,而你只想显示你定义的某个圆圈内的标记。您可以使用差异的平方来计算相当不错的距离(如果它很小)。假设您有一个已知的圆Cx和Cy的中心点和一个数组P.比较数组项i的这个公式:(P [i] x-Cx)(P [i] x-Cx)+(P [i] y-Cy)(P [i] y-Cy)到您关心的距离的平方(比如3000米或其他)。不要用平方根来打扰,因为这是处理密集型的。只需使用正方形。然后只绘制低于你限制的标记。

我能正确理解您的问题吗?也许你正在做的事与我想象的不同。