【问题标题】:Showing markers within bounding box using Google Maps API v3使用 Google Maps API v3 在边界框内显示标记
【发布时间】:2011-08-13 07:00:31
【问题描述】:

我想显示位于地图边界框内的标记列表。我有一个基本实现工作,它拦截地图的“bounds_changed”事件并使用地图西南角和东北角的纬度/经度坐标向我的服务器发出 AJAX 请求。这适用于大多数情况,但是我发现如果用户向东/向西平移太远,这个实现就会中断。

例如,假设边界框最初是整个世界(西南角:[-90, -180],西北角:[90, 180])。然后,如果用户向西平移 180 度,边界框变为 [-90, -360] / [90, 0]。这会破坏我的 AJAX 请求,因为即使用户仍然可以看到整个世界,我的数据库查询也不会返回任何经度 > 0 的标记。

最好的处理方法是什么?

【问题讨论】:

    标签: google-maps google-maps-api-3 gis


    【解决方案1】:

    执行此操作的最简单方法是在收到纬度和经度值时对其进行测试,如果它们大于“真实世界”的经度和纬度,则只需确保在范围内获取它们的对应值[-90; 90] 表示经度和 [-180; 180] 表示经度。

    附带说明:如果您想节省所有 ajax 调用,可以使用 javascript 来代替。 google.maps.LatLngBounds 类有一个名为 contains 的方法,用于检查给定的 latlng 是否在边界内。然后,您只需在初始化站点时将所有标记存储在一个数组中,然后在用户平移时对其进行迭代,并将其可见属性设置为 true(如果它们在当前范围内)。您可以通过在地图实例上调用 getBounds() 来获取当前边界。

    使用方法 map.getBounds().contains() 也将解决您的问题,而不必担心用户是否平移太远,因为 API 会为您处理。

    【讨论】:

      猜你喜欢
      • 2012-05-06
      • 2012-04-12
      • 1970-01-01
      • 2018-03-21
      • 1970-01-01
      • 2013-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多