使用php如何将百度经纬度转换为腾讯经纬度

在开发过程中,我们通常需要将一些地理位置信息进行处理,而不同平台的经纬度格式并不相同,这就需要进行转换。本文将介绍如何将百度经纬度转换为腾讯经纬度,同时使用php代码实现。

一、百度经纬度与腾讯经纬度的差异

经纬度是地球表面位置的标志,在不同的定位系统中有不同的表现方式,目前主流的定位系统有以下三种:WGS84、GCJ02和BD09。其中,WGS84是GPS定位系统使用的坐标系,GCJ02是中国国家测绘局制定的地理信息系统的坐标系,也是目前国内各大地图软件必须使用的坐标系,而百度地图则使用BD09。

在使用不同的定位系统时,经纬度的表现也会存在差异,例如一个地点的百度经纬度和腾讯经纬度如下所示:

百度经纬度:116.404,39.915
腾讯经纬度:116.397428,39.908697

立即学习“PHP免费学习笔记(深入)”;

二、转换方法

由于百度和腾讯使用的定位系统不同,所以需要通过一定的算法进行经纬度之间的转换。

将百度坐标系转换为地球坐标系(WGS84)

首先需要将百度坐标系转换为地球坐标系(WGS84),这可以通过百度提供的API实现,代码如下:

$lng, 'lat'=>$lat);}?>

登录后复制将地球坐标系(WGS84)转换为火星坐标系(GCJ02)

使用第一步中的函数得到地球坐标系(WGS84)的结果后,需要将其转换为火星坐标系。这可以通过以下代码实现:

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;}?>

登录后复制将火星坐标系(GCJ02)转换为腾讯坐标系

最后一步,将火星坐标系(GCJ02)转换为腾讯坐标系:

$lng, 'lat'=>$lat);}?>

登录后复制

三、完整代码实现

将以上三个步骤结合起来,得到PHP中实现百度经纬度转换为腾讯经纬度的完整代码如下:

$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;}?>

登录后复制

将以上代码保存在一个PHP文件中,即可使用。

四、总结

通过本文介绍,我们了解到了百度经纬度与腾讯经纬度之间的差异,并掌握了使用PHP代码将百度经纬度转换为腾讯经纬度的方法。在实际项目中,这种转换方式可以为我们提供更方便、更准确的地图信息处理功能。

以上就是使用php如何将百度经纬度转换为腾讯经纬度的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2034707.html

(0)
上一篇 2025年2月23日 22:59:51
下一篇 2025年2月23日 23:00:07

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 简单对比:JavaScript和PHP哪个复杂?

    javascript和php都是非常重要的编程语言,在web开发中发挥了关键作用。但是,许多人经常谈论哪一个具有更高的技术难度:javascript还是php。 在JavaScript和PHP之间进行选择取决于您将要完成的任务以及您的编程经…

    编程技术 2025年2月23日
    000
  • PHP怎么删除数组成员(三种方法)

    在php中,数组是一个非常常用的数据结构,但是在使用数组时常常会涉及到删除数组成员的操作。因此,本文将介绍php中几种不同的方式来删除数组成员,包括unset()、array_splice()和array_filter()函数。 unset…

    编程技术 2025年2月23日
    200
  • 如何使用php查询数据库同时满足三个字段

    php是一门广泛应用于web开发的脚本语言,而查询数据库是web开发中常用的操作,特别是要收集和展示数据时,需要从数据库中查询数据。在数据库查询操作中,满足多个条件的查询是很常见的。本文将介绍如何使用php查询数据库同时满足三个字段的方法。…

    编程技术 2025年2月23日
    200
  • 如何在JavaScript中获取PHP返回的数组数据

    在前端开发中,我们通常需要从后端获取数据并且处理,常常选择使用php作为后端语言,因为php可以很容易地生成数组数据,而这些数组数据通常需要通过javascript在前端页面中使用。接下来将详细介绍如何在javascript中获取php返回…

    编程技术 2025年2月23日
    200
  • 如何使用PHP来生成随机数组

    php是一种非常流行的编程语言,其内置的函数和库使得处理数据和生成随机数和数组变得非常容易。在本文中,我们将讨论如何使用php来生成随机数组。 生成随机数 在PHP中,PHP内置的函数 rand() 和 mt_rand() 可以用来生成随机…

    编程技术 2025年2月23日
    200
  • 如何使用PHP来更新数据库中的数据

    php是一种非常流行的服务端编程语言,它的主要特点是易于学习和使用,并且可以轻松地与数据库进行交互。在这篇文章中,我们将讨论如何使用php来更新数据库中的数据。 连接到数据库 在更新数据库之前,我们需要首先连接到数据库。在PHP中,我们可以…

    编程技术 2025年2月23日
    200
  • plupload php传递上传失败怎么解决

    随着互联网的快速发展,网络应用越来越多,文件上传成为了网站开发中必不可少的一部分。在实现文件上传的过程中,很多开发者选择了 plupload 和 php 结合进行实现。然而,由于 plupload php 传递上传失败问题,许多开发者在实际…

    编程技术 2025年2月23日
    200
  • php如何输出多维数组

    在 php 中,多维数组是一种常见的数据格式,特别是在需要处理分层结构的时候,比如树形结构。多维数组实际上就是一个数组中嵌套了一个或多个数组。要输出多维数组,需要使用循环,通常是嵌套循环,以遍历数组中所有元素。下面将详细介绍 php 如何输…

    编程技术 2025年2月23日
    200
  • 聊聊PHP数组内置的排序方法

    在php中,数组是一种非常常用的数据类型。对于数组的处理,排序是一个非常重要的操作。在php中,有许多内置的排序函数。本文将介绍php数组内置的排序方法。 sort() sort()函数用于按升序对数组进行排序。具体语法为: sort(ar…

    编程技术 2025年2月23日
    200
  • php怎么处理UTF-8编码的转义字符

    在编写php代码时,我们常常需要处理一些字符串数据。在这些字符串中可能会包含一些特殊字符,例如引号、反斜杠等等。这些特殊字符在处理时需要进行转义,否则可能会引起语法错误或者导致应用程序出现异常。 在PHP中,我们可以使用转义字符来对这些特殊…

    编程技术 2025年2月23日
    200

发表回复

登录后才能评论