2.手机虽然可以实现定位,但是定位速度比较慢。
跟网络有一定的关系。
优化
百度地理位置功能源码分析
<!--百度地图-->
<script src="http://api.map.baidu.com/components?ak=bOwh2i9zIWG7Ucl8xPitV2TM&v=1.0"></script>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=bOwh2i9zIWG7Ucl8xPitV2TM"></script>
/*
* 获取地理位置信息
*/
$rootScope.getAddr = function() {
console.log("定位操作ing..............");
/*-------------------- 利用百度API定位 ------------------------*/
var geolocation = new BMap.Geolocation();
geolocation.getCurrentPosition(
//获取位置信息成功
function(position){
if(this.getStatus() == BMAP_STATUS_SUCCESS){
// alert('您的位置:' + position.point.lng + ',' + position.point.lat);
$rootScope.longitude = position.point.lng;
$rootScope.latitude = position.point.lat;
// 根据坐标得到地址描述
$rootScope.getGeo();
} else {
alert('无法获取定位信息,可能影响对服务药店的筛选');
}
},{
// 指示浏览器获取高精度的位置,默认为false
enableHighAccuracy: true,
// 指定获取地理位置的超时时间,默认不限时,单位为毫秒
// timeout: 5000,
// 最长有效期(30S),在重复获取地理位置时,此参数指定多久再次获取位置
maximumAge: 30*1000
});
};
HTML5地理位置功能源码分析
源代码如下所示:
<!--百度地图-->
<script src="http://api.map.baidu.com/components?ak=bOwh2i9zIWG7Ucl8xPitV2TM&v=1.0">
</script>
/*
* 获取地理位置信息
*/
$rootScope.getAddr = function() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(
//获取位置信息成功
function(position) {
$rootScope.latitude = position.coords.latitude;
$rootScope.longitude = position.coords.longitude;
var myGeo = new BMap.Geocoder();
//根据坐标得到地址描述
$rootScope.getGeo();
},
//获取位置信息失败
function(error) {
switch (error.code) {
case error.PERMISSION_DENIED:
$rootScope.showAlert("请打开设备定位功能!");
break;
case error.POSITION_UNAVAILABLE:
$rootScope.showAlert("定位信息不可用!");
break;
case error.TIMEOUT:
$rootScope.showAlert("定位请求超时!");
break;
case error.UNKNOWN_ERROR:
$rootScope.showAlert("未知错误!");
break;
}
},
{
// 指示浏览器获取高精度的位置,默认为false
enableHighAccuracy: true,
// 指定获取地理位置的超时时间,默认不限时,单位为毫秒
timeout: 5000,
// 最长有效期,在重复获取地理位置时,此参数指定多久再次获取位置。
maximumAge: 3000
});
} else {
$rootScope.showAlert("您的设备不支持GPS定位!");
}
};
$rootScope.getAddr();
$rootScope.getGeo = function() {
var myGeo = new BMap.Geocoder();
// 根据坐标得到地址描述
myGeo.getLocation(new BMap.Point($rootScope.longitude, $rootScope.latitude), function(result) {
if (result) {
console.log(JSON.stringify(result));
$rootScope.geoaddress = {
'fulladdress': result.addressComponents.city + result.addressComponents.district + result.addressComponents.street,
'city': result.addressComponents.city,
'area': result.addressComponents.district,
'street': result.addressComponents.street,
};
console.log(JSON.stringify($rootScope.geoaddress));
}else {
$rootScope.showAlert("定位失败,地址解析失败");
}
});
};
感悟
通过阅读参考资料3,得知上面使用的定位方式是采用的 HTML5 的地理位置功能。
注:
TCP协议
- TCP 和 UDP 的区别?
- TCP 三次握手的过程?
- 为什么是三次而不是两次、四次?
- 三次握手过程中可以携带数据么?
- 说说 TCP 四次挥手的过程
- 为什么是四次挥手而不是三次?
- 半连接队列和 SYN Flood 攻击的关系
- 如何应对 SYN Flood 攻击?
- 介绍一下 TCP 报文头部的字段
- TCP 快速打开的原理(TFO)
- 说说TCP报文中时间戳的作用?
- TCP 的超时重传时间是如何计算的?
- TCP 的流量控制
- TCP 的拥塞控制
- 说说 Nagle 算法和延迟确认?
- 如何理解 TCP 的 keep-alive?
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
浏览器篇
- 浏览器缓存?
- 说一说浏览器的本地存储?各自优劣如何?
- 说一说从输入URL到页面呈现发生了什么?
- 谈谈你对重绘和回流的理解
- XSS攻击
- CSRF攻击
- HTTPS为什么让数据传输更安全?
- 实现事件的防抖和节流?
- 实现图片懒加载?
😕/bbs.csdn.net/topics/618166371)**
浏览器篇
- 浏览器缓存?
- 说一说浏览器的本地存储?各自优劣如何?
- 说一说从输入URL到页面呈现发生了什么?
- 谈谈你对重绘和回流的理解
- XSS攻击
- CSRF攻击
- HTTPS为什么让数据传输更安全?
- 实现事件的防抖和节流?
- 实现图片懒加载?