我正在尝试显示靠近当前地图位置的一般商店列表。
一切正常,但我刚刚意识到,无论我将地图平移到哪里,许多离当前地图位置不远的商店都会从我的 SQL Server 数据库中调用。
例子:
我在数据库中有一家位于德国的商店:
Venue Venue_Lat Venue_Lng
Bookstore 51.165712 10.451547
我在我的存储过程 [GetNearbyLocations] 中使用 Haversine 公式来检索假定在当前位置 50 英里范围内的商店,假设我通过半径为 50 英里的 USA 的当前位置:
Radius: 50
USA Lat: 38.5554745
USA Lng: -95.6649999
即使不在 50 英里半径范围内,德国的商店也会被调用。我理解并接受这些公式并非 100% 准确,但这是否常见?任何人都可以请对此提出建议。谢谢。
SProc 的一部分:
DECLARE @intMilesModifier int
SET @intMilesModifier = 3959
SELECT .... some fields,
[Venue_Lat],
[Venue_Long],
(@intMilesModifier*acos(cos(radians(@dmlLat))*cos(radians(Venue_Lat))*cos(radians(Venue_Long)-radians(@dmlLng))+sin(radians(@dmlLat))*sin(radians(Venue_Lat)))) AS distance
FROM [Stores] a
WHERE (@intMilesModifier*acos(cos(radians(@dmlLat))*cos(radians(Venue_Lat))*cos(radians(Venue_Long)-radians(@dmlLng))+sin(radians(@dmlLat))*sin(radians(Venue_Lat)))) < @Radius