Während des Entwicklungsprozesses müssen wir normalerweise einige geografische Standortinformationen verarbeiten, und die Längen- und Breitengradformate verschiedener Plattformen sind unterschiedlich, was eine Konvertierung erfordert. In diesem Artikel wird erläutert, wie Sie den Längen- und Breitengrad von Baidu in den Längen- und Breitengrad von Tencent konvertieren und PHP-Code zur Implementierung verwenden.
1. Der Unterschied zwischen Längengrad und Breitengrad von Baidu und Längengrad und Breitengrad von Tencent
Breitengrad und Längengrad sind Symbole für die Position auf der Erdoberfläche und werden in verschiedenen Positionierungssystemen auf unterschiedliche Weise ausgedrückt. Derzeit gibt es drei gängige Positionierungssysteme : WGS84, GCJ02 und BD09. Unter ihnen ist WGS84 das Koordinatensystem, das vom GPS-Positionierungssystem verwendet wird, GCJ02 ist das Koordinatensystem des geografischen Informationssystems, das vom China National Bureau of Surveying and Mapping formuliert wurde, und ist auch das Koordinatensystem, das von großen inländischen Karten verwendet werden muss Software, während Baidu Maps BD09 verwendet.
Bei Verwendung verschiedener Positionierungssysteme ist auch die Leistung von Längen- und Breitengraden unterschiedlich. Beispielsweise sind die Längen- und Breitengrade von Baidu und die Längen- und Breitengrade von Tencent wie folgt:
Baidu-Längen- und Breitengrad: 116.404,39.915
Längen- und Breitengrad von Tencent: 116.397428,39.908697
II Umrechnungsmethode
Da Baidu und Tencent unterschiedliche Positionierungssysteme verwenden, ist ein bestimmter Algorithmus für die Umrechnung zwischen Längen- und Breitengrad erforderlich.
Zuerst müssen Sie das Baidu-Koordinatensystem in das Erdkoordinatensystem (WGS84) konvertieren. Der Code lautet wie folgt:
$lng, 'lat'=>$lat); } ?>
Nachdem Sie die Funktion im ersten Schritt verwendet haben, um das Ergebnis des Erdkoordinatensystems (WGS84) zu erhalten, müssen Sie es in konvertieren das Mars-Koordinatensystem. Dies kann durch den folgenden Code erreicht werden:
transformLat($lng - 105.0, $lat - 35.0); $dLng = $this->transformLng($lng - 105.0, $lat - 35.0); $radLat = $lat / 180.0 * pi(); $magic = sin($radLat); $magic = 1 - $ee * $magic * $magic; $sqrtMagic = sqrt($magic); $dLat = ($dLat * 180.0) / (($a * (1 - $ee)) / ($magic * $sqrtMagic) * pi()); $dLng = ($dLng * 180.0) / ($a / $sqrtMagic * cos($radLat) * pi()); $mgLat = $lat + $dLat; $mgLng = $lng + $dLng; return array('lng'=>$mgLng, 'lat'=>$mgLat); } function transformLat($lng, $lat) { $ret = -100.0 + 2.0 * $lng + 3.0 * $lat + 0.2 * $lat * $lat + 0.1 * $lng * $lat + 0.2 * sqrt(abs($lng)); $ret += (20.0 * sin(6.0 * $lng * pi()) + 20.0 * sin(2.0 * $lng * pi())) * 2.0 / 3.0; $ret += (20.0 * sin($lat * pi()) + 40.0 * sin($lat / 3.0 * pi())) * 2.0 / 3.0; $ret += (160.0 * sin($lat / 12.0 * pi()) + 320 * sin($lat * pi() / 30.0)) * 2.0 / 3.0; return $ret; } function transformLng($lng, $lat) { $ret = 300.0 + $lng + 2.0 * $lat + 0.1 * $lng * $lng + 0.1 * $lng * $lat + 0.1 * sqrt(abs($lng)); $ret += (20.0 * sin(6.0 * $lng * pi()) + 20.0 * sin(2.0 * $lng * pi())) * 2.0 / 3.0; $ret += (20.0 * sin($lng * pi()) + 40.0 * sin($lng / 3.0 * pi())) * 2.0 / 3.0; $ret += (150.0 * sin($lng / 12.0 * pi()) + 300.0 * sin($lng / 30.0 * pi())) * 2.0 / 3.0; return $ret; } ?>
Der letzte Schritt besteht darin, das Mars-Koordinatensystem (GCJ02) in das Tencent-Koordinatensystem umzuwandeln:
$lng, 'lat'=>$lat); } ?>
3. Vollständige Code-Implementierung
Kombinieren Sie die oben genannten drei Schritte und erhalten Sie den vollständigen Code zum Konvertieren der Längen- und Breitengrade von Baidu in Längen- und Breitengrade von Tencent in PHP wie folgt:
$lng, 'lat'=>$lat); } function wgs84_to_gcj02($lng, $lat) { $a = 6378245.0; $ee = 0.00669342162296594323; $dLat = $this->transformLat($lng - 105.0, $lat - 35.0); $dLng = $this->transformLng($lng - 105.0, $lat - 35.0); $radLat = $lat / 180.0 * pi(); $magic = sin($radLat); $magic = 1 - $ee * $magic * $magic; $sqrtMagic = sqrt($magic); $dLat = ($dLat * 180.0) / (($a * (1 - $ee)) / ($magic * $sqrtMagic) * pi()); $dLng = ($dLng * 180.0) / ($a / $sqrtMagic * cos($radLat) * pi()); $mgLat = $lat + $dLat; $mgLng = $lng + $dLng; return array('lng'=>$mgLng, 'lat'=>$mgLat); } function transformLat($lng, $lat) { $ret = -100.0 + 2.0 * $lng + 3.0 * $lat + 0.2 * $lat * $lat + 0.1 * $lng * $lat + 0.2 * sqrt(abs($lng)); $ret += (20.0 * sin(6.0 * $lng * pi()) + 20.0 * sin(2.0 * $lng * pi())) * 2.0 / 3.0; $ret += (20.0 * sin($lat * pi()) + 40.0 * sin($lat / 3.0 * pi())) * 2.0 / 3.0; $ret += (160.0 * sin($lat / 12.0 * pi()) + 320 * sin($lat * pi() / 30.0)) * 2.0 / 3.0; return $ret; } function transformLng($lng, $lat) { $ret = 300.0 + $lng + 2.0 * $lat + 0.1 * $lng * $lng + 0.1 * $lng * $lat + 0.1 * sqrt(abs($lng)); $ret += (20.0 * sin(6.0 * $lng * pi()) + 20.0 * sin(2.0 * $lng * pi())) * 2.0 / 3.0; $ret += (20.0 * sin($lng * pi()) + 40.0 * sin($lng / 3.0 * pi())) * 2.0 / 3.0; $ret += (150.0 * sin($lng / 12.0 * pi()) + 300.0 * sin($lng / 30.0 * pi())) * 2.0 / 3.0; return $ret; } function gcj02_to_tx($lng, $lat) { $x = $lng; $y = $lat; $z = sqrt($x * $x + $y * $y) + 0.00002 * sin($y * pi()); $theta = atan2($y, $x) + 0.000003 * cos($x * pi()); $lng = $z * cos($theta) + 0.0065; $lat = $z * sin($theta) + 0.006; return array('lng'=>$lng, 'lat'=>$lat); } function bd09_to_tx($bd_lon, $bd_lat) { $point_wgs84 = $this->bd09_to_wgs84($bd_lon, $bd_lat); $point_gcj02 = $this->wgs84_to_gcj02($point_wgs84['lng'], $point_wgs84['lat']); $point_tx = $this->gcj02_to_tx($point_gcj02['lng'], $point_gcj02['lat']); return $point_tx; } ?>
Speichern Sie den obigen Code in einer PHP-Datei und Sie können ihn verwenden .
IV. Zusammenfassung
Durch die Einführung in diesem Artikel haben wir die Unterschiede zwischen dem Breiten- und Längengrad von Baidu und dem Breiten- und Längengrad von Tencent kennengelernt und die Methode zur Verwendung von PHP-Code zum Konvertieren von Breiten- und Längengrad von Baidu in Breiten- und Längengrad von Tencent gemeistert . In tatsächlichen Projekten kann uns diese Konvertierungsmethode bequemere und genauere Funktionen zur Verarbeitung von Karteninformationen bieten.
Das obige ist der detaillierte Inhalt vonSo konvertieren Sie den Längen- und Breitengrad von Baidu mit PHP in den Längen- und Breitengrad von Tencent. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!