如何查找长/纬度点是否在可见的bing映射中

时间:2012-03-10 11:38:07

标签: bing-maps latitude-longitude

这应该很简单,但我没有得到它。

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

加载bing map后,我得到了界限

var view = map.getBounds();

然后调用webmethod来获取应该显示的所有位置(在可见地图的边界内)。

我无法弄清楚获取位置的查询(所有位置都指定了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' 

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

1 个答案:

答案 0 :(得分:0)

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

您使用的数据库是什么?如果您使用的是SQL Server,则可以使用geography数据类型将每个位置定义为Point。地理数据类型在地球的圆形模型上运行,因此它将正确地考虑穿过第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;