Heim  >  Artikel  >  Backend-Entwicklung  >  Fragen Sie Standortinformationen in der Nähe basierend auf Längen- und Breitengrad ab

Fragen Sie Standortinformationen in der Nähe basierend auf Längen- und Breitengrad ab

WBOY
WBOYOriginal
2016-10-22 00:14:222552Durchsuche

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.

Antwortinhalt:

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

Stellungnahme:
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