Yaq*_*mad 5 c# sql-server google-maps google-maps-api-3
我有一个矩形位置的北,东,南和西值,我如何仅搜索该矩形位置范围内的那些位置(纬度/经度)?
请注意,我需要在数据库中搜索位置(纬度/经度)。我需要在数据库中找到给定矩形范围内的位置,然后在地图上为其绘制标记。
我不是在谈论Google搜索,搜索的API已经支持传递矩形边界以过滤搜索。
该googlemaps
API可我喜欢这样做:
var request = {
bounds: myMapObject.getBounds(), // Search only within the Bound of the Map
query: someTextToFind
};
Run Code Online (Sandbox Code Playgroud)
要么
var isWithInMapsBounds = myMapObject.getBounds().contains(myLocation);
Run Code Online (Sandbox Code Playgroud)
但是我需要在从数据库获取位置的同时这样做,我的意思是在服务器端。
有人可以指导我正确的方向,如何实现此功能?
编辑:
我想在数据库中搜索;所以我需要一个SQL解决方案。
DECLARE @Bounds AS Geography = GEOMETRY::STGeomFromText('polygon-wkt-here',0)
SELECT columns-list
FROM table
WHERE 1 = @Bounds.STIntersects(table.point-column)
Run Code Online (Sandbox Code Playgroud)
对于那些一无所知的人,请快速说明为什么不能将点位置与边界框的北/南/东/西坐标进行比较:
边界框可能不是纬度/经度对齐的(例如,其北/南/东/西线可能不遵循纬度/长轴)。如果您在纬度/经度地图投影上绘制平面矩形,就会发生这种情况。该点距离边界框边缘越近,距离赤道越远,失真就越明显。
使用地理数据类型的第二个原因是它提供了一种对任何多边形(而不仅仅是矩形)执行此类操作的统一方法。因此,现在您可以比较单个点是否在您的盒子内,或者查找邮政编码中的所有地址,所有地址都使用相同的代码段。
归档时间: |
|
查看次数: |
1165 次 |
最近记录: |