微信开发之附近商家地理位置计算和腾讯地图坐标转百度地图坐标的方法

原文:微信开发之附近商家地理位置计算和腾讯地图坐标转百度地图坐标的方法

微信开发之附近商家地理位置计算和腾讯地图坐标转百度地图坐标的方法

腾讯地图坐标转百度坐标

案例:本次开发的系统是一个商家联盟积分系统。在全国各地都有商家联盟的网点。

要求实现的功能

a.微信粉丝通过微信号就能查看附近的商家

b.我的联盟系统统计在2公里之内的商家网点

c.并标出商家和粉丝位置的距离是多少米。

d.在商家的详细介绍页面设置百度地图接入步行、公交、驾车一键导航功能

那么现在问题来了:

问题1:在做微信O2O开发的过程中,通过微信地理位置功能事件获得的是腾讯地图坐标。而我们的导航地图坐标是百度的地图API接口?

问题2:腾讯的地图坐标和边度的坐标计量方式是不同的计量方式,如何转换?

谷歌地图,高德地图,腾讯地图用的GCJ-02坐标提醒

百度地图用的BD-09坐标体系

问题3:两点坐标的距离如何计算?

程序代码见下,我已经做了函数处理和注释提醒,可以直接拿去用了

 

/**
       * 腾讯地图坐标转百度地图坐标
       * @param [String] $lat 腾讯地图坐标的纬度
       * @param [String] $lng 腾讯地图坐标的经度
       * @return [Array] 返回记录纬度经度的数组
*/
function Convert_GCJ02_To_BD09($lat,$lng){
        $x_pi = 3.14159265358979324 * 3000.0 / 180.0;
        $x = $lng;
        $y = $lat;
        $z =sqrt($x * $x + $y * $y) + 0.00002 * sin($y * $x_pi);
        $theta = atan2($y, $x) + 0.000003 * cos($x * $x_pi);
        $lng = $z * cos($theta) + 0.0065;
        $lat = $z * sin($theta) + 0.006;
        return array('lng'=>$lng,'lat'=>$lat);
}

//百度地图坐标计算
function rad($d)
{
       return $d * 3.1415926535898 / 180.0;
}  

/**
       * 腾讯地图坐标转百度地图坐标
       * @param [String] $lat1 A点的纬度
       * @param [String] $lng1 A点的经度
       * @param [String] $lat2 B点的纬度
       * @param [String] $lng2 B点的经度
       * @return [String] 两点坐标间的距离,输出单位为米
*/
function GetDistance($lat1, $lng1, $lat2, $lng2)
{
   $EARTH_RADIUS = 6378.137;//地球的半径
   $radLat1 = rad($lat1);
   $radLat2 = rad($lat2);
   $a = $radLat1 - $radLat2;
   $b = rad($lng1) - rad($lng2);
   $s = 2 * asin(sqrt(pow(sin($a/2),2) +
    cos($radLat1)*cos($radLat2)*pow(sin($b/2),2)));
   $s = $s *$EARTH_RADIUS;
   $s = round($s * 10000) / 10000;
   $s=$s*1000;
   return ceil($s);
}  

/**
       * 标记大概的距离,做出友好的距离提示
       * @param [$number] 距离数量
       * @return[String] 距离提示
*/
function mToKm($number){
    if(!is_numeric($number)) return ' ';
    switch ($number){
            case $number>1800&&$number<=2000:
                 $v='2';
            break;
            case $number>1500&&$number<=1800:
                 $v='1.8';
            break;
            case $number>1200&&$number<=1500:
                 $v='1.5';
            break;
            case $number>1000&&$number<=1200:
                 $v='1.2';
            break;
            case $number>900&&$number<=1000:
                 $v='1';
            break;
            default:
                $v=ceil($number/100)*100;
            break;
    }

    if($v<100){
        $v= '距离我【<font color="#FF4C06"><b>'.$v.'</b></font>】千米内。';}
        else{
        $v= '距离我【<font color="#FF4C06"><b>'.$v.'</b></font>】米内。';
    }
    return $v;

}
$location1=explode(',','30.625011,104.072701');//腾讯地图坐标
$location1==Convert_GCJ02_To_BD09($location1[0],$location1[1]);//转换腾讯坐标到百度坐标
$location2=explode(',','104.102209,30.647363');
$distance=GetDistance($location2[0],$location2[1],$location1[0],$location1[1]);//得出距离
$distance=mToKm($x);//对距离个性化转换处理

 

最终实现的微信地理位置呈现的效果图截图如下

微信窗口中粉丝地理位置和最近的商家位置呈现的距离提示

 

微信网站中根据公众号粉丝的openid和该粉丝当前的地理位置坐标计算出相应的距离

 

百度地图导航导商家

 

我接下来再分享一篇文章,关于微信的地理位置的存储和地理位置和附近商家的调用功能;

1.我就专门来分享关于如何获取改粉丝的当前位置坐标和当前粉丝的用户标示

2.如何把每个粉丝的地理位置信息和粉丝用户信息固话存储

3.如何方便当前持续的地理位置服务和调用;

 

微信开发交流 QQ铁牛:187395037 手机:15889726201

时间: 2024-09-10 02:31:50

微信开发之附近商家地理位置计算和腾讯地图坐标转百度地图坐标的方法的相关文章

微信JS-SDK坐标位置转换为百度地图坐标

原文:微信JS-SDK坐标位置转换为百度地图坐标 微信JS-SDK开发过程中,使用getLocation获取坐标位置,如何将微信获取的坐标直接应用到百度地图中,显示以下效果: 说明:红色图标是从微信转换过来的位置,蓝色图标是周边位置.首先从微信开发流程讲解. 1.微信JS-SDK开发文档 首先进入官网的帮助文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115&token=&lang=zh_CN 可对

微信JS-SDK坐标位置如何转换为百度地图坐标_javascript技巧

微信JS-SDK开发过程中,使用getLocation获取坐标位置,如何将微信获取的坐标直接应用到百度地图中,显示以下效果: 说明:红色图标是从微信转换过来的位置,蓝色图标是周边位置.首先从微信开发流程讲解. 1.微信JS-SDK开发文档 首先进入官网的帮助文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115&token=〈=zh_CN 可对文档进行详细的研读,要获取位置信息,分以下步骤: 第一步:绑定域名

安卓开发-关于百度地图的开发 如何把其他人的地址标记在地图上

问题描述 关于百度地图的开发 如何把其他人的地址标记在地图上 我想把做一种app两个使用者 得到对方的地址信息标记在自己的地图上的 基于百度地图 想请教一下大神 应该怎么做 解决方案 查一下百度的地图提供的接口吧,有很详细的说明. 是不是需要这个功能: 反地理编码+位置语义 按需返回经纬度坐标.详细地址和所在POI描述,支持省市区县结构化地址,独家支持POI语义名称.Android定位SDK 解决方案二: 百度地图通过经纬度获取地址信息百度地图地址转换百度地图 根据地址获取经纬度

百度地图JavaScript开发入门教程

        自从openGPS.cn小编在2011年的一个WEB项目中用到了百度地图做售楼数量分布显示功能之后,就一发不可收拾,在位置服务的领域一路走了5年之久.今天难得时间充裕,给WEB开发者分享一点自己的经验,希望能够给到新接触百度地图JavaScript开发的朋友们一些帮助.         百度地图JavaScript开发第一步,得会看资料.很多新手,是因为连基本的页面怎么打开都不知道,重度依赖搜索引擎去搜出来百度地图开发官方站点,从而记不住操作过程,回头却找不到用过的页面,不会操作

百度地图 android-百度地图开发问题:定位图层的显示问题!!

问题描述 百度地图开发问题:定位图层的显示问题!! 本人用百度地图Android SDK v3.2.0,进行开发,结果发现如下问题: 当定位图层显示模式切换到"罗盘"后时,地图会进行旋转,然后出现罗盘模式. 接着当你在切换为"普通"模式时,结果发现地图并没有旋转回正常的模式,而仅仅只是将定位点周围的罗盘取消了. 如图: 这是初始状态: 这是罗盘状态: 这是从"罗盘"返回"正常"后的状态: 求大神告知我如何解决这bug? 解决方

百度地图api-JAVA web开发根据地址来显示百度地图

问题描述 JAVA web开发根据地址来显示百度地图 众所周知调用百度地图需要经纬度. 可否就根据给出得具体地址,来显示百度地图. 或者根据地址查出经纬度,再用经纬度来显示百度地图? 解决方案 地址和 经纬度可以相互查找的.具体请上网搜索百度地图的api

微信公众平台消息接口开发(11)地理位置查询附近商家

  一.获取用户地址位置消息 用户发送位置时的消息及格式如下 后台格式: <xml> <ToUserName><![CDATA[gh_680bdefc8c5d]]></ToUserName> <FromUserName><![CDATA[oIDrpjqASyTPnxRmpS9O_ruZGsfk]]></FLACFromUserName> <CreateTime>1359036619</CreateTime

获取地理位置-微信开发,关于地图 获取文章,计算距离问题?求帮助

问题描述 微信开发,关于地图 获取文章,计算距离问题?求帮助 本问题是关于定位,距离测量,请有经验的大神给予帮助,谢谢! 现在开发一个基于微信的o2o平台,有需要方和服务方: 情况1:发布需求自动获取我的位置最好能让我自己选择,也就是他很出现多个位置,还有需要显示地图 情况2:用户可以查看附近的服务人员有哪些?这个应该是通过定位测算距离,找出最近的 求帮助,当前用Thinkphp开发中,请大神帮助,能详细更好,给思路也行 解决方案 你去看看微信有没有提供接口. 以前手机端开发的话,通过gps 基

关于微信开发中微信连wifi功能的商家主页不能跳转问题

问题描述 关于微信开发中微信连wifi功能的商家主页不能跳转问题 以前一直做着的客户一直都没什么问题.近期新开的两个客户,微信配置跟老客户一样但是到微信连wifi最后一步,点击完成时居然跳转至默认页面.商家主页,连接完成页都设置了却跳转至默认页面了.