Heim Backend-Entwicklung PHP-Tutorial Verwenden Sie Längen- und Breitengrad, um zu bestimmen, welche Geschäfte in einem bestimmten Umkreis am nächsten zu den Kunden sind, beispielsweise welche Geschäfte einem bestimmten Geschäft im Umkreis von 1.000 Metern am nächsten liegen.

Verwenden Sie Längen- und Breitengrad, um zu bestimmen, welche Geschäfte in einem bestimmten Umkreis am nächsten zu den Kunden sind, beispielsweise welche Geschäfte einem bestimmten Geschäft im Umkreis von 1.000 Metern am nächsten liegen.

Aug 08, 2016 am 09:27 AM
address data quot

Seit kurzem muss das Unternehmen die Lieferadresse des Kunden verwenden, um zu prüfen, welche Geschäfte der Adresse des Kunden am nächsten liegen. Kunden können zum nächstgelegenen Geschäft gehen, um die Waren abzuholen.

Wie berechnen wir also welche Filialen im Umkreis von 1.000 Metern um die Adresse des Kunden liegen? . ($address ist die Kundenadresse)

2. Wenn es sich um ein Geschäft im Umkreis von 1000 Metern handelt, müssen wir den Längen- und Breitengradbereich innerhalb von 1000 Metern berechnen >
    //百度接口获取经纬度
    public function getlat($address) {
        $url = 'http://api.map.baidu.com/geocoder/v2/?city=上海&address=' . $address . '&output=json&ak=' . $this->ak;

        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
        $data = curl_exec($ch);
        curl_close($ch);
        $data = json_decode($data, true);
        $ret['lat'] = $data['result']['location']['lat'];
        $ret['lng'] = $data['result']['location']['lng'];
        echo json_encode($ret);
    }
Nach dem Login kopieren
3. Wir wissen, dass jedes Geschäft in der Datenbank die Längen- und Breitengradinformationen dieses Geschäfts speichert. Jetzt können wir den oben berechneten Breiten- und Längengradbereich verwenden, um herauszufinden, welche Geschäfte sich im Umkreis von 1000 Metern befinden >
Der obige Code muss entsprechend Ihrer tatsächlichen Situation geschrieben werden. Sie können sich hauptsächlich die SQL-Anweisung $ Hehe ansehen

4. Wenn ich berechnen möchte, welches Geschäft der Adresse des Kunden am nächsten liegt, benötige ich eine Methode zur Berechnung der Entfernung, wie folgt:

    /*
     * 计算经纬度范围
     * $lat 纬度
     * $lon 经度
     * $raidus 半径(米)
     */

    function getAround($lat, $lon, $raidus) {
        $PI = 3.14159265;
        $EARTH_RADIUS = 6378137;
        $RAD = $PI / 180.0;

        $latitude = $lat;
        $longitude = $lon;
        $degree = (24901 * 1609) / 360.0;
        $raidusMile = $raidus;
        $dpmLat = 1 / $degree;
        $data = array();
        $radiusLat = $dpmLat * $raidusMile;
        $minLat = $latitude - $radiusLat;
        $maxLat = $latitude + $radiusLat;
        $data["maxLat"] = $maxLat;
        $data["minLat"] = $minLat;
        $mpdLng = $degree * cos($latitude * ($PI / 180));
        $dpmLng = 1 / $mpdLng;
        $radiusLng = $dpmLng * $raidusMile;
        $minLng = $longitude - $radiusLng;
        $maxLng = $longitude + $radiusLng;
        $data["maxLng"] = $maxLng;
        $data["minLng"] = $minLng;
        //print_r($data);
        return $data;
    }
Nach dem Login kopieren

Abschließend berechnen und vergleichen wir die Geschäfte Innerhalb von 1000 Metern können Sie erkennen, welches Geschäft am nächsten liegt, indem Sie die Entfernung zwischen den einzelnen Geschäften kennen.

    //计算出半径范围内的店
    public function getdz($lat, $lng) {
        include_once('my_db.php');
        $this->qu = new MY_DB_ALL("QUICK");
        //$ret = json_decode($this->getlat($address), true);
        //print_r($ret);exit;
        $data = $this->getAround($lat, $lng, 2000);
        //print_r($data);
        $sql = "select * from shop where baidu_lat between '" . $data['minLat'] . "' and '" . $data['maxLat'] . "' and baidu_lng between '" . $data['minLng'] . "' and '" . $data['maxLng'] . "' and status=1 and ztd_flag=2";
        $rett = $this->qu->rquery($sql);
        for ($i=0;$i<count($rett);$i++) {
            $array[$i]["shop_id"] = $rett[$i]["shop_id"];
            $array[$i]["shop_name"] = iconv("gbk","utf-8",$rett[$i]["shop_name"]);
            $array[$i]["shop_address"] = iconv("gbk","utf-8",$rett[$i]["shop_address"]);
            $array[$i]["shop_date"] = $rett[$i]["shop_date"];
            $array[$i][&#39;shop_phone&#39;] = $rett[$i]["shop_phone"];
            $array[$i][&#39;area&#39;] = $rett[$i]["area"];
        }
        //echo "<pre class="brush:php;toolbar:false">";print_r($array);exit;
        echo json_encode($array);
    }
Nach dem Login kopieren

Im Folgenden wird beschrieben, wie anhand des Längen- und Breitengrads ermittelt werden kann, welche Geschäfte in einem bestimmten Bereich am nächsten zu den Kunden sind, z. B. welche Geschäfte einem bestimmten Geschäft im Umkreis von 1000 Metern am nächsten sind, einschließlich einiger Aspekte des Inhalts Interesse an PHP-Tutorials haben.

    /**
     *  @desc 根据两点间的经纬度计算距离
     *  @param float $lat 纬度值
     *  @param float $lng 经度值
     */
    public function getDistance($lat1, $lng1, $lat2, $lng2) {
        $earthRadius = 6367000; //地球半径

        $lat1 = ($lat1 * pi() ) / 180;
        $lng1 = ($lng1 * pi() ) / 180;

        $lat2 = ($lat2 * pi() ) / 180;
        $lng2 = ($lng2 * pi() ) / 180;

        $calcLongitude = $lng2 - $lng1;
        $calcLatitude = $lat2 - $lat1;
        $stepOne = pow(sin($calcLatitude / 2), 2) + cos($lat1) * cos($lat2) * pow(sin($calcLongitude / 2), 2);
        $stepTwo = 2 * asin(min(1, sqrt($stepOne)));
        $calculatedDistance = $earthRadius * $stepTwo;

        return round($calculatedDistance);
    }
Nach dem Login kopieren
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

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

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)

Heiße Themen

Java-Tutorial
1660
14
PHP-Tutorial
1260
29
C#-Tutorial
1233
24
php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Welche Daten befinden sich im Datenordner? Welche Daten befinden sich im Datenordner? May 05, 2023 pm 04:30 PM

Der Datenordner enthält System- und Programmdaten, wie z. B. Softwareeinstellungen und Installationspakete. Jeder Ordner im Datenordner stellt einen anderen Typ von Datenspeicherordner dar, unabhängig davon, ob sich die Datendatei auf den Dateinamen „Data“ oder die Dateierweiterung „Benannte Daten“ bezieht Es handelt sich bei allen um vom System oder Programm angepasste Datendateien. Daten sind eine Sicherungsdatei zur Datenspeicherung, die im Allgemeinen mit Meidaplayer, Notepad oder Word geöffnet werden kann.

Was tun, wenn die MySQL-Ladedaten verstümmelt sind? Was tun, wenn die MySQL-Ladedaten verstümmelt sind? Feb 16, 2023 am 10:37 AM

Die Lösung für die verstümmelten MySQL-Ladedaten: 1. Suchen Sie die SQL-Anweisung mit verstümmelten Zeichen. 2. Ändern Sie die Anweisung in „LOAD DATA LOCAL INFILE „employee.txt“ INTO TABLE EMPLOYEE Zeichensatz utf8;“.

Was sind die Unterschiede zwischen xdata und data Was sind die Unterschiede zwischen xdata und data Dec 11, 2023 am 11:30 AM

Die Unterschiede sind: 1. xdata bezieht sich normalerweise auf unabhängige Variablen, während sich data auf den gesamten Datensatz bezieht. 2. xdata wird hauptsächlich zum Erstellen von Datenanalysemodellen verwendet, während Daten normalerweise für Datenanalysen und Statistiken verwendet werden Für die Regressionsanalyse, Varianzanalyse und Vorhersagemodellierung können Daten mit verschiedenen statistischen Methoden analysiert werden. 4. xdata erfordert normalerweise eine Datenvorverarbeitung und Daten können vollständige Originaldaten enthalten.

Mehr Retouren als Verkäufe: Der Humane Ai Pin entwickelt sich zu einer kommerziellen Katastrophe Mehr Retouren als Verkäufe: Der Humane Ai Pin entwickelt sich zu einer kommerziellen Katastrophe Aug 08, 2024 pm 01:14 PM

Kurz nach der Einführung des Humane Ai Pin ergaben vernichtende Kritiken, dass das KI-Gadget alles andere als marktreif sei, da die meisten der ursprünglich beworbenen Funktionen entweder nicht richtig funktionierten oder einfach fehlten, ebenso wie die Akkulaufzeit

Können Daten in der Vue-Komponente keine Funktion sein? Können Daten in der Vue-Komponente keine Funktion sein? Dec 19, 2022 pm 05:22 PM

Nein, Daten in der Vue-Komponente müssen eine Funktion sein. Um die Wiederverwendung von Daten zu verhindern, werden Komponenten in Vue als Funktionen definiert. Die Daten in der Vue-Komponente sollten voneinander isoliert sein und sich nicht gegenseitig beeinflussen. Bei jeder Wiederverwendung der Komponente sollten die Datendaten einmal kopiert werden. Andere Daten werden kopiert. Wenn die Daten der wiederverwendeten lokalen Komponenten nicht betroffen sind, müssen Sie über die Datenfunktion ein Objekt als Status der Komponente zurückgeben.

Die Misserfolgsquote bei KI-Projekten liegt bei über 80 % – die Studie nennt eine schlechte Problemerkennung und einen Fokus auf die neuesten Technologietrends unter den Hauptproblemen Die Misserfolgsquote bei KI-Projekten liegt bei über 80 % – die Studie nennt eine schlechte Problemerkennung und einen Fokus auf die neuesten Technologietrends unter den Hauptproblemen Aug 31, 2024 am 12:59 AM

Jeder und seine Tante scheinen auf der Suche nach überhöhten Gewinnspannen und einem Marketing-Hype auf den KI-Zug aufzuspringen – schauen Sie sich nur AMDs jüngstes Ryzen-Rebranding als Paradebeispiel für diesen KI-Hype an. Das hat eine aktuelle Studie von RAND herausgefunden

MySQL schreibt verrückte Fehlerprotokolle MySQL schreibt verrückte Fehlerprotokolle Feb 18, 2024 pm 05:00 PM

Eine Kerngeschäftsdatenbank, die Version ist MySQL8.34 Community Server Edition. Seit seiner Einführung ist das Fehlerprotokoll dieses Datenbankservers sehr schnell gestiegen (wie in der Abbildung unten dargestellt) und kann alle 24 Stunden eine Kapazität von mehr als 10 G erreichen. Da ein Störungsalarm vorlag und der normale Zugang zum Betrieb nicht beeinträchtigt war, durfte das zuständige Personal den MySQL-Dienst nicht neu starten. Angesichts dieser Situation musste ich eine automatische geplante Aufgabe einrichten, um diese Protokolle jede Nacht zu einer festen Zeit zu bereinigen. Führen Sie für bestimmte Vorgänge „crontab -e“ in der Systembefehlszeile aus und fügen Sie die folgende Textzeile hinzu: 0001***echo>/data/mysql8/data/mysql_db/mysql.log Speichern Sie und verlassen Sie den Bearbeitungsmodus

See all articles