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

Javascript 仅在指定的圆圈/区域显示谷歌地图标记,javascript,php,html,google-maps,Javascript,Php,Html,Google Maps,我只想在指定区域显示标记!例如,我想画一个半径为3的圆,或者任意一个圆心(任意板条)。然后,我只需要在该圆的区域中显示标记。 我怎样才能做到这一点?可能吗 更新:我的问题的解决方案 function isMarkerInArea(circle, marker) { return (circle.getBounds().contains(marker.getPosition())); }; 说明: getBounds()返回圆的latLng边界 getPosition()返回标记的板条

我只想在指定区域显示标记!例如,我想画一个半径为3的圆,或者任意一个圆心(任意板条)。然后,我只需要在该圆的区域中显示标记。 我怎样才能做到这一点?可能吗

更新:我的问题的解决方案

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

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

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

很难确切知道你在做什么,但我假设你有一个标记数组,你只想显示你定义的某个圆圈内的标记。您可以使用差值的平方来计算相当合适的距离(如果很小)。假设你有一个已知的圆Cx和Cy的中心点和一个数组P。将数组项i:(P[i]x-Cx)(P[i]x-Cx)+(P[i]y-Cy)(P[i]y-Cy)的这个公式与你关心的距离的平方进行比较(比如3000米或其他)。不要麻烦平方根,因为这是处理密集型的。就用方块吧。然后只画低于你的限制的标记

我对你的问题理解正确吗?也许您正在做的事情与我的immagine不同。

最好的方法(假设您有一组标记)是使用circle的
contains()
函数。 例如:

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

此函数将返回一个
布尔值
。如果设置为true,则显示标记,否则隐藏标记。

是否有标记的lat和long?请进一步解释。是的,我在mmy数据库中找到了标记的latlng!我会试一试。谢谢@Uros,它对我有用!但有)以前的缺失;事实上,我对你的答案感到困惑。我的问题是我的数据库中有车辆的latlng,当用户输入他/她的坐标时。我只想使用标记显示位于他/她的位置附近的车辆(比如半径约300-400米)。我希望你现在明白我的问题了。所以,如果你能帮我解决这个问题。:)好的,所以我在回答中没有解释单位。。。如果你想使用300米作为你的极限,那么你的比较数字将是300*300=90000。要将纬度/经度数(以度为单位)转换为米,必须使用地球半径的截面进行转换。假设地球半径为E=6371009米(对于北半球),将每个值乘以E*PI/180。这并没有考虑到地球的曲率,所以对于300米这样的小距离来说,这是大致正确的。如果还不够清楚,请告诉我。