天天看點

微信環境中定位擷取城市名稱(基于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));

    }

    }