通过微信获取当前地理位置,然后将其存到session…
2018-06-22 05:27:16来源:未知 阅读 ()
首先,在静态页面中,添加微信的配置文件,通过js获取。
<script type="text/javascript">
wx.config({
debug: false,
appId: '{$signPackage.appId}',
timestamp: '{$signPackage.timestamp}',
nonceStr: '{$signPackage.nonceStr}',
signature: '{$signPackage.signature}',
jsApiList: [
// 所有要调用的 API 都要加到这个列表中
'checkJsApi',
'openLocation',
'getLocation',
'scanQRCode'
]
});
wx.ready(function () {
$('#scan').click(function(){
wx.scanQRCode({
needResult: 0,
});
});
wx.checkJsApi({
jsApiList: [
'getLocation'
],
success: function (res) {
if (res.checkResult.getLocation == false)
{
alert('你的微信版本太低,不支持微信JS接口,请升级到最新的微信版本!');
return;
}
}
});
wx.getLocation({
success: function (res) {
var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
var geoconv = 'http://api.map.baidu.com/geoconv/v1/?callback=coordinateTransformation&coords=' + longitude + ',' + latitude + '&from=1&to=5&ak=5BFNbSgnVF5g2O72NpvTDxFm';
var script = document.createElement('script');
script.src = geoconv;
document.head.appendChild(script);
},
cancel: function (res) {
alert('用户拒绝授权获取地理位置');
}
});
});
function coordinateTransformation(data)
{
var LATLNG = data.result[0].y + ',' + data.result[0].x;
var url = 'http://api.map.baidu.com/geocoder/v2/?callback=getCurrentLocation&ak=5BFNbSgnVF5g2O72NpvTDxFm&location=' + LATLNG + '&output=json&pois=1';
var script = document.createElement('script');
script.src = url;
document.head.appendChild(script);
}
function getCurrentLocation(data)
{
if(data.status === 0)
{
var address = data.result.formatted_address,
x = data.result.location.lng,
y = data.result.location.lat,
city = data.result.addressComponent.city,
street = data.result.addressComponent.street || data.result.formatted_address,
reqData = 'street=' + address + '&name=' + street + '&lng=' + x + '&lat=' + y + '&city=' + city;
var url = "{:U('Index/savePosition')}";
$.getJSON(url,{'name':street,'lng':x,'lat': y,'city':city},function(data)
{
if(data.returnCode) { }
});
}
}
</script>
其次,在控制器中接收ajax传递的地理坐标,然后保存到session中。
public function savePosition()
{
$city = II('get.city','','trim');
$addr = II('get.name','','trim');
$lng = II('get.lng','','trim');
$lat = II('get.lat','','trim');
$myLocation = array(
'city' =>$city,
'addr' =>$addr,
'lng' =>$lng,
'lat' =>$lat,
);
$_SESSION['MyLocation'] = $myLocation;
$data['returnCode'] = 1;
$data['returnInfo'] = '获取位置成功!';
$this->ajaxReturn($data);
return;
}
注:用的是thinkphp框架,II是自定义的方法,获取get或post传递的值,和 I 函数一样。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- PHP获取数组中单列值的方法 2020-03-13
- 利用PHP获取汉字首字母并且分组排序详解 2020-02-08
- Laravel中获取路由参数Route Parameters的五种方法示例 2020-02-07
- PHP 获取 ping 时间的实现方法 2019-12-28
- PHP高效获取远程图片尺寸和大小的实现方法 2019-12-14
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash