Heim > Artikel > Backend-Entwicklung > Fragen Sie Standortinformationen in der Nähe basierend auf Längen- und Breitengrad ab
Jetzt besteht eine solche Nachfrage. Ich möchte die fünf Orte in der Nähe von zwei Kilometern in der Datentabelle basierend auf dem Längen- und Breitengrad des aktuellen Standorts abfragen Reichweite in der Nähe, bis fünf Standorte gefunden werden. Ich habe an zwei Optionen gedacht:
Die erste Möglichkeit besteht darin, es vollständig mit SQL-Anweisungen zu implementieren. Wenn es vollständig mit SQL-Anweisungen implementiert wird, weiß ich nicht, wie man dieses SQL schreibt,
Die zweite Möglichkeit besteht darin, zuerst eine Abfrage durchzuführen und dann eine Beurteilung auf der Grundlage der Geschäftsergebnisse zu treffen. Wenn die 5 Standorte nicht erfüllt sind, erweitern Sie den Bereich in der Nähe und fragen Sie erneut in der Datenbank ab, bis 5 Standorte gefunden werden.
Ich weiß nicht, welche der beiden Optionen effizienter ist, bitte geben Sie mir einen Rat. Ich kann Ihnen nicht genug danken.
Jetzt besteht eine solche Nachfrage. Ich möchte die fünf Orte in der Nähe von zwei Kilometern in der Datentabelle basierend auf dem Längen- und Breitengrad des aktuellen Standorts abfragen Reichweite in der Nähe, bis fünf Standorte gefunden werden. Ich habe an zwei Optionen gedacht:
Die erste Möglichkeit besteht darin, es vollständig mit SQL-Anweisungen zu implementieren. Wenn es vollständig mit SQL-Anweisungen implementiert wird, weiß ich nicht, wie man dieses SQL schreibt,
Die zweite Möglichkeit besteht darin, zuerst eine Abfrage durchzuführen und dann eine Beurteilung basierend auf der Geschäftsleistung zu treffen. Wenn die 5 Standorte nicht erfüllt sind, erweitern Sie den Bereich in der Nähe und fragen Sie erneut in der Datenbank ab, bis 5 Standorte gefunden werden.
Ich weiß nicht, welche der beiden Optionen effizienter ist, bitte geben Sie mir einen Rat. Ich kann Ihnen nicht genug danken.
Ich verstehe Ihre beiden Optionen überhaupt nicht.
Können Sie nicht zuerst Ihre Logik vereinfachen?
Entspricht Ihre Anfrage nicht: Fragen Sie die fünf nächstgelegenen Standorte ab. Warum müssen wir zwischen einer Entfernung von zwei Kilometern und einer Entfernung von zwei Kilometern unterscheiden?
Wenn Sie die letzten fünf Punkte abfragen, warum müssen Sie dann eine geschäftliche Beurteilung berücksichtigen? Reicht es nicht aus, nur SQL Limit zu verwenden?
Die zweite Option ist vollständig mit SQL implementiert. Sie stellt eine größere Belastung für die Datenbank dar, um eine höhere Effizienz zu erreichen
Sie benötigen Amap LBS Cloud, es wird Ihren Anforderungen gerecht
Probieren Sie die MySQL-Datenbank für räumliche Koordinaten aus.
<code>CREATE TABLE `spa` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(32) DEFAULT NULL, `loc` point DEFAULT NULL, /* ^---------------------------------- 保存经纬度 */ PRIMARY KEY (`id`) )</code>
<code>/* 查询 */ SELECT * FROM spa WHERE DISTANCE(POINT($当前经度, $当前纬度), loc) < ($距离(单位米) / 111195) LIMIT 5; /* ^-----单位为度 ^---1度多少米 */</code>Wenn Sie sortieren möchten, können Sie die Entfernung bestellen.
Sie müssen GEOHASH verwenden, um die 2D-Koordinaten in Zeichenfolgen umzuwandeln und dann zu vergleichen