天天看点

微信环境中定位获取城市名称(基于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));

    }

    }