gpt4 book ai didi

c# - 从 map 边界内的数据库加载坐标

转载 作者:行者123 更新时间:2023-11-30 22:34:14 26 4
gpt4 key购买 nike

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

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

如果 map 以非洲为中心,我当前的实现工作正常,但如果 map 在同一 View 中显示中国和加拿大,那么我的实现无效,因为经度在太平洋从正转为负。

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

最佳答案

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

知道一个点是西南角而不是东南角是解决问题的关键。

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

  • 如果西南角的经度小于东北角的经度,则如果一个点的经度在这两个经度之间且纬度在这两个经度之间,则该点在范围内角的两个纬度。 (这可能就是您正在为所有事情做的事情,这就是为什么它在条件成立的非洲有效,但在横跨太平洋的地方却无效。)

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

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

关于c# - 从 map 边界内的数据库加载坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7916668/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com