


Gespeicherte MySQL-Prozedur – Abfrage der qualifizierten Benutzer innerhalb des Radius und der sortierten Entfernung über Baidu-Koordinaten
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 ;
Aufruf:
CALL DIS(_lat,_lng,_ras,@_data);
_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; }
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.

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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.

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

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

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

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

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.

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

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.
