Heim Backend-Entwicklung PHP-Tutorial Gespeicherte MySQL-Prozedur – Abfrage der qualifizierten Benutzer innerhalb des Radius und der sortierten Entfernung über Baidu-Koordinaten

Gespeicherte MySQL-Prozedur – Abfrage der qualifizierten Benutzer innerhalb des Radius und der sortierten Entfernung über Baidu-Koordinaten

Aug 08, 2016 am 09:31 AM
declare range varchar

Ich habe mir heute schon einmal eine ähnliche Anwendung angesehen und fand sie nicht sehr sinnvoll, also habe ich es mir noch einmal überlegt und eine gespeicherte Abfrageprozedur geschrieben. Die

-Tabelle wird nicht beschrieben. Der

-Prozess ist wie folgt:

-- ----------------------------
-- Procedure structure for DIS
-- ----------------------------
DROP PROCEDURE IF EXISTS `DIS`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `DIS`(IN `_lat` varchar(11),IN `_lng` varchar(11),IN `_ras` int,INOUT `_data` text)
BEGIN
	DECLARE _sql text ;
	DECLARE EARTH_RADIUS VARCHAR(10) ;
	DECLARE _range VARCHAR(16);
	DECLARE lngR VARCHAR(16);
	DECLARE maxLat VARCHAR(16);
	DECLARE minLat VARCHAR(16);
	DECLARE maxLng VARCHAR(16);
	DECLARE minLng VARCHAR(16);



	SET EARTH_RADIUS = 6378.137;
	SET _range = 180 / pi() * _ras / EARTH_RADIUS;
	SET lngR = _range / cos(_lat * pi() / 180);
	
	SET maxLat = _lat + _range;
	SET minLat = _lat - _range;
	SET maxLng = _lng + lngR ;
	SET minLng = _lng - lngR ;

	SET @_sql = CONCAT('SELECT 
				*, 
				ceil(
					2 * asin(
						sqrt(
							pow(sin((((',_lat,' * PI() / 180.0) - (',_lat,' * PI() / 180.0))) / 2),2) 
							+ cos(',_lat,' * PI() / 180.0) * cos(lat * PI() / 180.0) * pow(sin(((',_lng,' * PI() / 180.0) - (lng * PI() / 180.0)) / 2),2)
						)
					) * ',EARTH_RADIUS,' * 1000
				) AS di 
			FROM dis 
			WHERE lat BETWEEN ',minLat,' AND ',maxLat,' AND lng BETWEEN ',minLng,' AND ',maxLng,' 
			ORDER BY di
			LIMIT 0,10');
	
	PREPARE stmt FROM @_sql;
	EXECUTE stmt;

END
;;
DELIMITER ;
Nach dem Login kopieren

Aufruf:

CALL DIS(_lat,_lng,_ras,@_data);
Nach dem Login kopieren
Parameterbeschreibung:

_lat, Längengrad;

_lng, Breitengrad;

_ras, Radius (Einheit: km); akzeptieren und zurückgeben

Im Rückgabewert ist di die sortierte Entfernung, von nah nach fern, die Einheit ist m.

Wenn Sie keine gespeicherten Prozeduren verwenden, können Sie sie in ein PHP-Programm aufteilen:

Erhalten Sie zuerst einen quadratischen Koordinatenbereich und verbinden Sie ihn dann durch den sql in @_sql über der SQL-Anweisung, führen Sie sie einfach aus.

define("EARTH_RADIUS",6378.137);
/**
 * 获取距离四个坐标
 * @param $lon
 * @param $lat
 * @param int $distance 默认1KM的距离
 * @return array
*/
function getCoor($lng,$lat,$distance = 1){
	$range = 180 / pi() * $distance / EARTH_RADIUS;
	$lngR = $range / cos($lat * pi() / 180);
	$data = array();
	$data["maxLat"] = $lat + $range;
	$data["minLat"] = $lat - $range;
	$data["maxLng"] = $lng + $lngR ;//最大经度
	$data["minLng"] = $lng - $lngR ;//最小经度
	return $data;
}
Nach dem Login kopieren

Hinweise: Das hier erhaltene Ergebnis ist ein quadratischer und kein kreisförmiger Radius. Sie können zu einem späteren Zeitpunkt eine sekundäre Filterung durchführen, z. B. array_filter(), die hier nicht weiter beschrieben wird.

Das Obige stellt die gespeicherte MySQL-Prozedur vor – die Verwendung von Baidu-Koordinaten zur Abfrage qualifizierter Benutzer innerhalb des Radius und der Entfernung nach der Sortierung, einschließlich Aspekten des Inhalts. Ich hoffe, dass es für Freunde hilfreich sein wird, die an PHP-Tutorials interessiert sind.

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was sind die Verwendungszwecke von Oracle Declare? Was sind die Verwendungszwecke von Oracle Declare? Sep 15, 2023 pm 01:12 PM

Die Verwendung der Oracle-Deklaration umfasst Variablendeklaration, Konstantendeklaration, Cursordeklaration und Unterprogrammdeklaration. Detaillierte Einführung: 1. Variablendeklaration, im PL/SQL-Block können Sie die DECLARE-Anweisung verwenden, um Variablen zu deklarieren. 2. Konstanten sind unveränderliche Werte, die im PL/SQL-Block deklariert werden Die Abfrageergebnismenge wird im Block verarbeitet. 4. Subroutinendeklaration Eine Subroutine ist ein wiederverwendbarer Codeblock, der in einem PL/SQL-Block definiert ist.

PHP gibt alle Werte im Array zurück, um ein Array zu bilden PHP gibt alle Werte im Array zurück, um ein Array zu bilden Mar 21, 2024 am 09:06 AM

In diesem Artikel wird ausführlich erläutert, wie PHP alle Werte eines Arrays zurückgibt, um ein Array zu bilden. Der Herausgeber hält dies für recht praktisch, daher teile ich es Ihnen als Referenz mit und hoffe, dass Sie nach dem Lesen dieses Artikels etwas gewinnen können . Verwenden der Funktion array_values() Die Funktion array_values() gibt ein Array aller Werte in einem Array zurück. Die Schlüssel des ursprünglichen Arrays bleiben nicht erhalten. $array=["foo"=>"bar","baz"=>"qux"];$values=array_values($array);//$values ​​​​werden ["bar","qux"]Verwendet Eine Schleife kann eine Schleife verwenden, um alle Werte des Arrays manuell abzurufen und zu einem neuen hinzuzufügen

So verwenden Sie die Range-Funktion in Java So verwenden Sie die Range-Funktion in Java Apr 19, 2023 pm 11:49 PM

Vorwort In Java ist die Range-Methode sowohl in der IntStream- als auch in der LongStream-Klasse verfügbar. In der IntStream-Klasse ist es hilfreich, den sequentiellen Wert von IntStream innerhalb des Funktionsparameterbereichs zurückzugeben. Bei dieser Methode sind startInclusive(inklusive) und endExklusiv(exklusiv) die beiden Parameter, die zusammen mit der Inkrementschrittgröße verwendet werden. Wie bereits erwähnt, wird der Startwert einbezogen und der Endwert ausgeschlossen. Im Fall von LongStream besteht der einzige Unterschied in der Hinzufügung des LongStream-Werts. Range-Syntax Sehen wir uns die Syntax der Range-Methode in Java an. IntStream-Bereich

Erklären Sie es in einfachen Worten: Verstehen Sie das Funktionsprinzip des Go-Sprachbereichs gründlich Erklären Sie es in einfachen Worten: Verstehen Sie das Funktionsprinzip des Go-Sprachbereichs gründlich Mar 12, 2024 pm 02:18 PM

Die Go-Sprache ist eine prägnante und leistungsstarke Programmiersprache mit einzigartigem Design und in vielen Aspekten einzigartigen Funktionen. Eine der beeindruckendsten Funktionen ist das Schlüsselwort „range“, das zum Durchlaufen von Datenstrukturen wie Arrays, Slices, Karten und Kanälen verwendet wird. Die Flexibilität und Bequemlichkeit von Range erleichtern das Durchqueren komplexer Datenstrukturen, viele Menschen sind jedoch verwirrt über die Funktionsweise. In diesem Artikel wird auf einfache und leicht verständliche Weise erläutert, wie Range funktioniert, und anhand spezifischer Codebeispiele den Lesern das Verständnis erleichtert. Schauen wir uns zunächst ein einfaches Beispiel an

So implementieren Sie Datumsvergleiche, Sortierungen und andere Vorgänge mit dem Typ varchar in MySQL So implementieren Sie Datumsvergleiche, Sortierungen und andere Vorgänge mit dem Typ varchar in MySQL May 31, 2023 pm 01:49 PM

Bei der Verwendung von MySQL werden Daten im Allgemeinen in den Formaten datetime, timestamp und anderen gespeichert. Aus besonderen Gründen oder aus historischen Gründen werden die Datumsdaten jedoch im Varchar-Format gespeichert. Funktion verwenden: STR_TO_DATE(str,format) Die Funktion STR_TO_DATE(str,format) ist die Umkehrfunktion der Funktion DATE_FORMAT(). Es benötigt einen String str und einen Formatstring format. STR_TO_DATE() gibt einen DATETIME-Wert zurück, wenn die Formatzeichenfolge Datums- und Uhrzeitkomponenten enthält oder wenn das Wort

So verwenden Sie die Deklaration in Oracle So verwenden Sie die Deklaration in Oracle Sep 19, 2023 am 09:44 AM

Die DECLARE-Anweisung ist ein Schlüsselwort, das in Oracle zum Deklarieren von Variablen, Konstanten und Cursorn verwendet wird. Bietet eine praktische Möglichkeit, Datenobjekte für die Verwendung in PL/SQL-Blöcken zu definieren und zu initialisieren. Durch die Verwendung der DECLARE-Anweisung kann PL/SQL-Code modularer und lesbarer gemacht werden.

Der enorme Cadillac Escalade IQ bietet eine Reichweite von 460 Meilen zu einem Preis von bis zu 170.000 US-Dollar Der enorme Cadillac Escalade IQ bietet eine Reichweite von 460 Meilen zu einem Preis von bis zu 170.000 US-Dollar Sep 30, 2024 am 06:15 AM

Die Elektroversion des legendären Escalade von GM hat gerade seinen Konfigurator auf den Markt gebracht, und der Preis liegt nach Anreizen zwischen 130.000 und etwa 170.000 US-Dollar. Das ist mehr als bei fast jedem anderen Luxus-Elektrofahrzeug, Pickup oder SUV auf dem Markt, einschließlich Teslas C

Was ist der Unterschied zwischen char und varchar in MySQL? Was ist der Unterschied zwischen char und varchar in MySQL? Sep 04, 2023 pm 02:16 PM

Die Unterschiede zwischen char und varchar in MySQL sind: 1. CHAR hat eine feste Länge, während VARCHAR eine variable Länge hat. 2. Die Speicher- und Abrufeffizienz von CHAR ist hoch, während die Speicher- und Abrufeffizienz von VARCHAR nicht hoch ist , VARCHAR kann Speicherplatz sparen.

See all articles