現在のマップ位置に近い雑貨店のリストを表示しようとしています。
すべてが正常に機能しますが、マップをどこにパンしても、現在のマップの場所に近くない多くの店舗が SQL Server DB から呼び出されることに気付きました。
例:
DBにドイツにあるストアがあります:
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