这应该很简单,但我没有得到它。
我有一个指定了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'
有没有标准化的方法来做到这一点?那么比较会起作用吗?
答案 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;