将一下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));
}
}