(二十六) 地理位置
程序员文章站
2022-04-09 08:57:43
...
本节知识点获取到地理位置
-
获取地理位置
-
监听地理位置
-
停止监听地理位置
(1) 获取地理位置 plus .geolocation这里没写错
/*有2个参数 第一个参数表示就是成功的回调函数,第二个参数就是失败的回调函数*/
plus.geolocation.getCurrentPosition(geoInfo, function(e) {
alert("获取位置信息失败:" + e.message);
});
(2) 一直监听地理位置
//特别注意的就是wtachId要在外部定义。因为后面的停止监听用的到
if(watchId) {
return;
}
watchId = plus.geolocation.watchPosition(function(p) {
alert("监听位置变化信息:");
geoInfo(p);
}, function(e) {
alert("监听位置变化信息失败:" + e.message);
});
(3)停止监听
if(watchId) {
alert("停止监听位置变化信息");
plus.geolocation.clearWatch(watchId);
watchId = null;
}
(4)geoInfo函数
//获取地理位置开始
function geoInfo(position) {
var timeflag = position.timestamp; //获取到地理位置信息的时间戳;一个毫秒数;
var codns = position.coords; //获取地理坐标信息;
var lat = codns.latitude; //获取到当前位置的纬度;
var longt = codns.longitude; //获取到当前位置的经度
var alt = codns.altitude; //获取到当前位置的海拔信息;
var accu = codns.accuracy; //地理坐标信息精确度信息;
var altAcc = codns.altitudeAccuracy; //获取海拔信息的精确度;
var head = codns.heading; //获取设备的移动方向;
var sped = codns.speed; //获取设备的移动速度;
//百度地图申请地址
// http://lbsyun.baidu.com/apiconsole/key
// http://api.map.baidu.com/geocoder/v2/?output=json&ak=你从百度申请到的Key&location=纬度(Latitude),经度(Longitude)
// http://api.map.baidu.com/geocoder/v2/?output=json&ak=BFd9490df8a776482552006c538d6b27&location=40.065639,116.419413
//详细地址
//http://api.map.baidu.com/geocoder/v2/?ak=eIxDStjzbtH0WtU50gqdXYCz&output=json&pois=1&location=40.065639,116.419413
var baidu_map = "http://api.map.baidu.com/geocoder/v2/?output=json&ak=BFd9490df8a776482552006c538d6b27&location=" + lat + ',' + longt;
mui.get(baidu_map, { //请求的地址
},
function(data) { //服务器返回响应,根据响应结果,分析是否登录成功; ...
var result = data['result'].addressComponent;
// 国家
var country = result['country'];
//城市
var city = result['city'];;
//地址
var address = result['province'] + result['district'] + result['street'];
//data 有很多信息,大家如果需要可以for in出来看下
console.log(address);
}, 'json'
);
}
//获取地理位置结束
(5)全部配套函数
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<link href="css/mui.min.css" rel="stylesheet" />
<script src="js/mui.min.js"></script>
<script type="text/javascript">
mui.init()
</script>
</head>
<body>
<header class="mui-bar mui-bar-nav">
<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
<h1 class="mui-title">滑动导航</h1>
</header>
<div class="mui-content">
<button type="button" id="a1" class="mui-btn mui-btn-blue mui-btn-block">获取地理位置</button>
<button type="button" id="a2" class="mui-btn mui-btn-blue mui-btn-block">监听地理位置</button>
<button type="button" id="a3" class="mui-btn mui-btn-blue mui-btn-block">停止监听地理位置</button>
</div>
</body>
<script>
mui.plusReady(function() {
var a1 = document.querySelector("#a1");
var a2 = document.querySelector("#a2");
var a3 = document.querySelector("#a3");
a1.addEventListener("tap", function() {
/*有2个参数 第一个参数表示就是成功的回调函数,第二个参数就是失败的回调函数*/
plus.geolocation.getCurrentPosition(geoInfo, function(e) {
alert("获取位置信息失败:" + e.message);
});
});
var watchId; //开关 函数外层定义 每隔30S监听一次
a2.addEventListener("tap", function() {
if(watchId) {
return;
}
watchId = plus.geolocation.watchPosition(function(p) {
alert("监听位置变化信息:");
geoInfo(p);
}, function(e) {
alert("监听位置变化信息失败:" + e.message);
});
});
a3.addEventListener("tap", function() {
if(watchId) {
alert("停止监听位置变化信息");
plus.geolocation.clearWatch(watchId);
watchId = null;
}
});
//获取地理位置开始
function geoInfo(position) {
var timeflag = position.timestamp; //获取到地理位置信息的时间戳;一个毫秒数;
var codns = position.coords; //获取地理坐标信息;
var lat = codns.latitude; //获取到当前位置的纬度;
var longt = codns.longitude; //获取到当前位置的经度
var alt = codns.altitude; //获取到当前位置的海拔信息;
var accu = codns.accuracy; //地理坐标信息精确度信息;
var altAcc = codns.altitudeAccuracy; //获取海拔信息的精确度;
var head = codns.heading; //获取设备的移动方向;
var sped = codns.speed; //获取设备的移动速度;
//百度地图申请地址
// http://lbsyun.baidu.com/apiconsole/key
// http://api.map.baidu.com/geocoder/v2/?output=json&ak=你从百度申请到的Key&location=纬度(Latitude),经度(Longitude)
// http://api.map.baidu.com/geocoder/v2/?output=json&ak=BFd9490df8a776482552006c538d6b27&location=40.065639,116.419413
//详细地址
//http://api.map.baidu.com/geocoder/v2/?ak=eIxDStjzbtH0WtU50gqdXYCz&output=json&pois=1&location=40.065639,116.419413
var baidu_map = "http://api.map.baidu.com/geocoder/v2/?output=json&ak=BFd9490df8a776482552006c538d6b27&location=" + lat + ',' + longt;
mui.get(baidu_map, { //请求的地址
},
function(data) { //服务器返回响应,根据响应结果,分析是否登录成功; ...
var result = data['result'].addressComponent;
// 国家
var country = result['country'];
//城市
var city = result['city'];;
//地址
var address = result['province'] + result['district'] + result['street'];
//data 有很多信息,大家如果需要可以for in出来看下
console.log(address);
}, 'json'
);
}
//获取地理位置结束
})
</script>
</html>
作者:我拥抱着我的未来
链接:https://www.jianshu.com/p/6c7c79af84c9
來源:简书
上一篇: 并发编程之多线程基础篇及面试
下一篇: 孔融让梨