Vor ein paar Tagen hat ein Kunde eine solche Anfrage gestellt: eine mobile Website zur Essensbestellung, um Hotels im Umkreis von 5 Kilometern um den aktuellen Standort abzufragen, damit der Kunde essen gehen kann.
Nachdem ich diese Anfrage erhalten hatte, wusste ich nicht, wie ich anfangen sollte, und fügte der Tabelle des Hotels zwei Felder hinzu, um den Längen- und Breitengrad des Hotels zu speichern um den aktuellen Längen- und Breitengrad des Standorts des Kunden zu erhalten, werden diese übergeben und dann mit dem Längen- und Breitengrad des Hotels in der Datenbank berechnet, um dies herauszufinden.
Um den Abstand zwischen zwei Punkten in der Datenbank abzufragen, muss diese Funktion in der Datenbank definiert werden.
Ich habe lange online gesucht, konnte diese Funktion aber nicht finden. Schließlich habe ich dieses Problem mit Hilfe eines Freundes auf CSDN gelöst. Ich bin Lordbaby sehr dankbar, dass er mir diese Funktion zur Verfügung gestellt hat, um mehr Freunden zu helfen, die sie wollen.
--计算地球上两个坐标点(经度,纬度)之间距离sql函数 CREATE FUNCTION [dbo].[fnGetDistance](@LatBegin REAL, @LngBegin REAL, @LatEnd REAL, @LngEnd REAL) RETURNS FLOAT AS BEGIN --距离(千米) DECLARE @Distance REAL DECLARE @EARTH_RADIUS REAL SET @EARTH_RADIUS = 6378.137 DECLARE @RadLatBegin REAL,@RadLatEnd REAL,@RadLatDiff REAL,@RadLngDiff REAL SET @RadLatBegin = @LatBegin *PI()/180.0 SET @RadLatEnd = @LatEnd *PI()/180.0 SET @RadLatDiff = @RadLatBegin - @RadLatEnd SET @RadLngDiff = @LngBegin *PI()/180.0 - @LngEnd *PI()/180.0 SET @Distance = 2 *ASIN(SQRT(POWER(SIN(@RadLatDiff/2), 2)+COS(@RadLatBegin)*COS(@RadLatEnd)*POWER(SIN(@RadLngDiff/2), 2))) SET @Distance = @Distance * @EARTH_RADIUS --SET @Distance = Round(@Distance * 10000) / 10000 RETURN @Distance END