【问题标题】:Showing google map marker in specified circle/area only仅在指定的圆圈/区域中显示谷歌地图标记
【发布时间】:2014-08-09 17:19:58
【问题描述】:

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

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

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

说明:

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

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

【问题讨论】:

  • 你有纬度和经度的标记吗?请进一步解释。
  • 是的,我在 mmy 数据库中找到了标记的 latlng!

标签: javascript php html google-maps


【解决方案1】:

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

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

这个函数将返回一个boolean。如果为真,则设置显示标记,否则将其隐藏。

【讨论】:

  • 我会试一试的。
  • 感谢@Uros,它对我有用!但是之前缺少 ) ;
【解决方案2】:

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

我是否正确理解了您的问题?也许你做的事情和我想象的不一样。

【讨论】:

  • 我实际上对您的回答感到困惑。我的问题是我的数据库中有车辆的纬度,当用户输入他/她的坐标时。我只想使用标记显示位于他/她位置附近(例如半径约 300-400 米)的车辆。我希望你现在清楚地了解我的问题。所以,如果你能帮助我解决问题。 :)
  • 好的,所以我没有在回答中解释单位...如果您想使用 300 米作为限制,那么您的比较数将为 300 * 300 = 90,000。要将纬度/经度数(以度为单位)以米为单位,您必须使用地球半径的部分进行转换。假设地球半径为 E=6371009 米(对于北半球),您将每个值乘以 E * PI / 180。这没有考虑到地球的曲率,因此对于 300 米这样的小距离来说近似正确。如果还不够清楚,请告诉我。
猜你喜欢
  • 1970-01-01
  • 2023-04-10
  • 2019-02-18
  • 2018-06-24
  • 1970-01-01
  • 2020-08-07
  • 2016-08-09
  • 2016-10-14
  • 1970-01-01
相关资源
最近更新 更多