【问题标题】:How to find if a long/lat point is in the visible bing map如何查找长/纬度点是否在可见的 bing 地图中
【发布时间】:2012-03-11 13:31:24
【问题描述】:

这应该很简单,但我不明白。

我有一个指定 lon/lat 的位置数据库。

加载 bing 地图后,我得到了边界

var view = map.getBounds();

然后调用一个网络方法来获取所有应该显示的位置(在可见地图的范围内)。

我无法找出一个查询来获取位置(都指定了 lon/lat)。

这显然不起作用,因为当负值发挥作用时,它们会弄乱查询:

SELECT Location_name, longtitude, latitude  FROM location_view WHERE latitude< '40.112'   and latitude> '35.783'   and longtitude< '28.10453' and longtitude> '19.315' 

有没有标准化的方法来做到这一点?那么这种比较会起作用吗?

【问题讨论】:

  • 您的查询对于负值绝对可以正常工作:-130 的经度仍然在 -120 的经度以西。唯一不起作用的情况是,如果您的地图边界越过 180 度子午线……即“最西”经度为 170,“最东”纬度为 -170。

标签: bing-maps latitude-longitude


【解决方案1】:

对于负值,您的查询绝对可以正常工作:-130 的经度仍然在 -120 的经度以西。唯一不起作用的情况是地图的边界越过 180 度子午线。 IE。 “最西”经度为 170,“最东”纬度为 -170。

您使用的是什么数据库?如果您使用的是 SQL Server,那么您可以使用 geography 数据类型将您的每个位置定义为一个点。 geography 数据类型在地球的圆形模型上运行,因此它可以通过如下查询正确说明穿越 180 度子午线:

SELECT Location_name
FROM location_view
WHERE location.STIntersects('POLYGON((19.315 35.783, 28.10453 35.783, 28.10453 40.112, 19.315 40.112, 19.315 35.783))') = 1;

【讨论】:

  • 感谢您的回复。我已经通过将所有值标准化为 >0 完成了一个解决方法,即。添加到 latitude+90 和 lon+180 。我正在使用 MSSQSL 并且您引用的数据类型不可用。虽然它看起来确实比我的方法更清洁。
  • 你提到的数据类型是2008年的,我们使用的是sql2005。 (抱歉在我的评论之前没有检查)
猜你喜欢
  • 2012-04-14
  • 1970-01-01
  • 1970-01-01
  • 2011-12-09
  • 2012-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多