微信环境中定位获取城市名称(基于thinkphp3.2)

将一下js放入需要定位的页面,wx.config()中的各个参数获取方式如下

调用以下方法的同时需要下载jssdk.引入文件jssdk

/**
     * 获取微信签名
     */
    public function getSignPackage(){
    require getcwd().'/Public/weixin-jssdk/php/jssdk.php'; //引入jssdk文件
    $jssdk = new \JSSDK($this->weixinConfig['appid'],$this->weixinConfig['appsecret']);
    $signPackage = $jssdk->GetSignPackage();//获取
    return $signPackage;
    }

在控制方法中调用上边方法,将值传入模板

<script>

//微信环境中定位,获取当前经纬度,然后传入后台根据经纬度调取百度地图接口,获取城市名称。


 $(function(){
getLoc();
})


//判断是否是微信内置浏览器
function isWeiXin(){ 
var ua = window.navigator.userAgent.toLowerCase(); 
if(ua.match(/MicroMessenger/i) == 'micromessenger'){ 
return true; 
}else{ 
return false; 






function getLoc(){
if(isWeiXin()){ 
//通过config接口注入权限验证配置
wx.config({
   debug: false,
   appId: "{$signPackage['appId']}",
   timestamp: "{$signPackage['timestamp']}",
   nonceStr: "{$signPackage['nonceStr']}",
   signature: "{$signPackage['signature']}",
   jsApiList: [
       // 所有要调用的 API 都要加到这个列表中
       'checkJsApi',
       'getLocation',
     ]
});
// 通过ready接口处理成功验证
wx.ready(function () {

//通过checkJsApi判断当前客户端版本是否支持指定获取地理位置
wx.checkJsApi({
   jsApiList: [
       'getLocation'
   ],
   success: function (res) {
       // alert(JSON.stringify(res));
       // alert(JSON.stringify(res.checkResult.getLocation));
       if (res.checkResult.getLocation == false) {
           alert('你的微信版本太低,不支持微信JS接口,请升级到最新的微信版本!');
           return;
       }
   }
});



wx.getLocation({
   type: 'gcj02', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
   success: function (res) {
       var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
       var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
       var speed = res.speed; // 速度,以米/每秒计
       var accuracy = res.accuracy; // 位置精度
       $.ajax({
        url:"{:U('Common/getCityLocation')}",
        data:'latitude='+latitude+'&longitude='+longitude,
        type:'post',
        success:function(data){
        alert(data);
        console.log(data);
        }
       }) 
   }
});

});

}else{
alert('请在微信环境中打开');
}
}  




</script>

//控制器方法,本人是获取城市名称

 public function getCityLocation(){
    $latitude=I('post.latitude');//纬度
    $longitude=I('post.longitude');//经度
    $url="http://api.map.baidu.com/geocoder/v2/?ak=IHDKmkKAofhZDlUG8Vq2iqFKgQzvDt5c&location=".$latitude.",".$longitude."&output=json&coordtype=gcj02ll";
    $output=file_get_contents($url);
    $address=json_decode($output,true);
    $city_name=$address['result']['addressComponent']['city'];//获取城市名称
    $city_code=$address['result']['cityCode'];//获取城市代码id
    if(!empty($city_name)){//获取到城市的时候返回true
    $this->ajaxReturn(array($city_name));
    }
    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值