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