【问题标题】:load coordinates from database that are within the bounds of the map从数据库中加载地图范围内的坐标
【发布时间】:2011-10-27 13:37:03
【问题描述】:

我需要从数据库中返回一组过滤后的记录,这些记录的坐标在当前地图范围内 (map.getBounds())

根据 Google Maps API v3,可以使用他们的 api 和函数“containsLatLng(latlng:GLatLng)”在客户端执行此操作,但我想在服务器端执行此操作,然后只返回记录在这个坐标内。

如果地图以非洲为中心,我当前的实施工作有效,但如果地图在同一视图中显示中国和加拿大,那么我的实施将无法工作,因为太平洋的经度从正变为负。

关于如何准确实现这一点有什么建议吗?

【问题讨论】:

  • 不是这方面的专家,所以我宁愿评论而不是回答,是太平洋的经度从正变为负的问题吗?那将打破界限。
  • @RobHaupt。没错,基本就是这个问题!我将使用折线来查看它是否真的超出了边界。

标签: c# google-maps-api-3 google-maps-markers


【解决方案1】:

在 Google 地图中,LatLngBounds 对象构造函数采用矩形边界的西南角和东北角。

知道一点是西南角而不是东南角对于解决问题至关重要。

如果你知道一个点是西南角,另一个是东北角,那么比较这两个角的经度。您的算法将像这样工作:

  • 如果西南角的经度小于东北角的经度,则如果某个点的经度介于这两个经度之间,而纬度介于这两个经度之间角的两个纬度。 (这可能是您为所有事情所做的事情,这就是为什么它在条件属实的非洲有效,但不适用于跨越太平洋的地方。)

  • 如果西南角的经度比东北角的经度更多,那么你的边界越过 0 经度,你需要反转条件:如果一个点在边界内,如果它的经度在数值上介于西南角的经度和东北角的经度之间。

为简单起见,因为它几乎可以肯定是正确的,我假设您永远不会有一个涵盖北极或南极的边界。 (在 Google 地图中,我什至不知道你是否可以有这样的界限。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    • 1970-01-01
    • 2020-11-15
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多