关于定位,分为GPS定位和网络定位。本文将详细描述的浏览器定位,属于网络定位。这是一种通过使用高德JS-API来实现位置定位、城市定位的方法,包含了IP定位,检索等多种网络定位方式。如果您的手机支持GPS功能,能够自动获取GPS信息,定位将更加准确。

浏览器定位

浏览器定位插件,封装了标准的HTML5定位,并含纠正模块,同时该定位方式仅适用于支持HTML5的浏览器上,如Internet Explorer 9、Firefox、Chrome、Safari 以及 Opera等。代码如下:

    /*** Created by ly-wangweiq on 2015/7/29.* * support mobile*///用户位置定位   使用geolocation定位var mMap=function(){function rad(d){return d*Math.PI/180.0;}this.map={},this.geolocation={},this.k=0,//加载地图,调用浏览器定位服务this.initMap=function(mapContainer,completFunc){if(typeof(AMap)=="object"){this.map = new AMap.Map(mapContainer, {resizeEnable: true});this.map.plugin('AMap.Geolocation', function () {this.geolocation = new AMap.Geolocation({enableHighAccuracy: true,//是否使用高精度定位,默认:truetimeout: 10000,          //超过10秒后停止定位,默认:无穷大maximumAge: 0,           //定位结果缓存0毫秒,默认:0convert: true,           //自动偏移坐标,偏移后的坐标为高德坐标,默认:trueshowButton: true,        //显示定位按钮,默认:truebuttonPosition: 'LB',    //定位按钮停靠位置,默认:'LB',左下角buttonOffset: new AMap.Pixel(10, 20),//定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20)showMarker: true,        //定位成功后在定位到的位置显示点标记,默认:trueshowCircle: true,        //定位成功后用圆圈表示定位精度范围,默认:truepanToLocation: true,     //定位成功后将定位到的位置作为地图中心点,默认:truezoomToAccuracy:true      //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false});this.map.addControl(this.geolocation);AMap.event.addListener(this.geolocation, 'complete', onComplete);//返回定位信息AMap.event.addListener(this.geolocation, 'error', onError);      //返回定位出错信息});function onComplete(data){console.log(completFunc)console.log(data)if(completFunc){completFunc(data);}}function onError(){var str = '定位失败,';str += '错误信息:'switch(data.info) {case 'PERMISSION_DENIED':str += '浏览器阻止了定位操作';break;case 'POSITION_UNAVAILBLE':str += '无法获得当前位置';break;case 'TIMEOUT':str += '定位超时';break;default:str += '未知错误';break;}alert(str)}}},this.getCurrentPosition=function(callback){if(typeof(this.geolocation.getCurrentPosition)!='undefined'){this.geolocation.getCurrentPosition();}else{setTimeout(function(){//将获得的经纬度信息,放入sessionStorgethis.getSessionLocation(callback)},200)}},this.distance = function(obj1,obj2){//return:mvar lng=new AMap.LngLat(obj1.lng, obj1.lat);var lag=new AMap.LngLat(obj2.lng, obj2.lat);var ss=lng.distance(lag);return ss;
},
this.getSessionLocation=function(callback){if(sessionStorage.getItem('location')){callback();}else{this.initMap('',function(data){sessionStorage.setItem("location",JSON.stringify(data))callback();});this.getCurrentPosition(callback);}},/**两点之间的距离*(lng1.lat1)地址一的经纬度*(lng2.lat2)地址一的经纬度*单位米
*/ this.serverDistance = function(obj1,obj2){//return:mvar radLat1 = rad(obj1.lat);var radLat2 = rad(obj2.lat);var a = radLat1 - radLat2;var b = rad(obj1.lng)- rad(obj2.lng);var s =  2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) + Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)));s = s *6378137;s = Math.round(s * 10000)/10000 ;return s;
}
return this;
}();

这里将定位获取的信息存入sessionStorge中,这样只需要首次访问时,需要定位,之后都可以从sessionStorge中得到,大大提高了速度。

下面将演示调用定位和两点距离的实例。

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no"/>
<title></title>
<script language="javascript" src="http://webapi.amap.com/maps?v=1.3&amp;key=e8496e8ac4b0f01100b98da5bde96597"></script>
<script src="mAmaplbs.js"></script>
</head>
<body><a id="distance" onclick="getDistance()">获取距离</a>
<script>
//获取当前位置(方法名)
mMap.getSessionLocation(locationFunc)
function locationFunc(){var data = JSON.parse(sessionStorage.getItem("location"));alert("lng:"+data.position.lng)alert("lat:"+data.position.lat)
}// 获取两点的距离 (m)
function getDistance(){var obj1={lng:116.39,lat: 39.98};var obj2={lng:116.39,lat: 38.98};alert(mMap.distance(obj1,obj2));mMap.serverDistance(obj1,obj2);
}
</script>
</body>
</html>

其中”webapi.amap.com/maps?v=1.3&key=e8496e8ac4b0f01100b98da5bde96597这里面的key,需要在高德API网站获取[http://lbs.amap.com/]。

H5开发:调用高德地图api实现H5定位功能相关推荐

  1. Python调用高德地图API实现经纬度换算、地图可视化

    作者 | 糖甜甜甜 出品 | 经管人学数据分析 Python调用高德地图API实现经纬度换算.地图可视化 前地图可视化的工具和函数比较多,但是在不知道相关地点经纬度的情况下,通过python调用高德地 ...

  2. python 根据经纬度 调取和显示地图_Python调用高德地图API实现经纬度换算、地图可视化-站长资讯中心...

    目前地图可视化的工具和函数比较多,但是在不知道相关地点经纬度的情况下,通过python调用高德地图API实现经纬度换算,并且直接在高德地图新推出的轻量级可视化平台上实现一键式地图可视化,这其中需要申请 ...

  3. 你还在为高德地图找不到门牌号等详细地址而烦恼吗?你还在等什么——Python调用高德地图API实现经纬度换算、地图可视化

    Python调用高德地图API实现经纬度换算.地图可视化 前地图可视化的工具和函数比较多,但是在不知道相关地点经纬度的情况下,通过python调用高德地图API实现经纬度换算,并且直接在高德地图新推出 ...

  4. 项目 - Web地图开发【高德地图API】(二)

    导航兔: Web地图开发 [高德地图API] 导航地址 Web地图开发[高德地图API](一) https://qianmoer.blog.csdn.net/article/details/12842 ...

  5. python调用高德地图api 可视化_Python调用高德地图API实现经纬度换算、地图可视化...

    前地图可视化的工具和函数比较多,但是在不知道相关地点经纬度的情况下,通过python调用高德地图API实现经纬度换算,并且直接在高德地图新推出的轻量级可视化平台上实现一键式地图可视化,这其中需要申请密 ...

  6. android开发之高德地图API篇:1、高德地图API之实时定位+轨迹可视化

    TIME:2020年7月6日 高德地图API之实时定位+轨迹可视化 前言: step1.工程的配置 step2.显示地图 step2.实现静态定位: step3.实时定位 step4.实现轨迹可视化: ...

  7. 关于app内嵌h5页面调用百度地图定位问题,为什么定位不准呢?

    关于app内嵌h5页面调用百度地图定位问题,为什么定位不准呢?以下为代码. 百度地图:里面有3种定位方式(a:浏览器定位,b:IP定位,c:定位SDK辅助定位),我选择第3种,是需要app那块添加些什 ...

  8. python调用高德地图api 可视化_Python:利用高德地图API实现找房

    记:本项目是在实验楼上看到的,但是上面的代码由于没有及时维护,爬虫文件的代码不再能完整的把所有房源信息爬取下来,我根据最新的58同城官网进行了研究,现在的官网的房源信息已经不是分页的了,而是拉到最后自 ...

  9. 项目 - Web地图开发【高德地图API】(一)

    导航兔: Web地图开发 [高德地图API] 导航地址 Web地图开发[高德地图API](一) https://qianmoer.blog.csdn.net/article/details/12842 ...

最新文章

  1. 万字长文,别再说你不懂Linux内存管理了(合辑),30 张图给你安排的明明白白...
  2. 新物流三大趋势!阿里研究院院长说一个空前机会来了
  3. 电脑回收站删除的文件怎么恢复,原来这么简单
  4. python怎么打日志_怎样调试 日志 python 代码
  5. 循环结构作业c语言,c语言循环结构练习题带答案
  6. 作者:黄媛洁(1992-),女,食品安全大数据技术北京市重点实验室、北京工商大学计算机与信息工程学院硕士生...
  7. oracle数据库关不掉,oracle进程关不掉的问题??新手问题
  8. 单调栈 BZOJ2364 城市美化
  9. 网络交换机怎么连接硬盘录像机、网络交换机怎么连接摄像头
  10. python合并文件夹_python实现将两个文件夹合并至另一个文件夹(制作数据集)
  11. Python画熊头像
  12. 纯css3彩色3d雪糕
  13. 自学编程系列——5 pandas入门
  14. 多个视频如何合 并,怎么合成视频
  15. 源码阅读之Splitter
  16. java jit_Java的JIT
  17. 快门背后的机器学习:实时 HDR+ 和双重曝光控制
  18. 第二阶段--团队冲刺--第十天
  19. Java生成词云!你喜欢得书都在图里!
  20. ios运行html时黑屏,iOS13 ,xcode11新建项目真机运行出现黑屏及新出现的SceneDelegate的作用...

热门文章

  1. oracle 自带 实时同步功能吗_Oppo手机自带翻译功能你知道吗?一键实时语音翻译,看完学到了...
  2. Python自动下载论文
  3. 武汉星起航:深度剖析个人卖家在亚马逊上开店的流程
  4. springBoot 全局异常处理 报错 : Could not resolve method parameter at index 0 in public .....
  5. 为什么互联网项目适用敏捷开发
  6. Bzoj3583 杰杰的女性朋友
  7. Uni-app 结算页 支付逻辑
  8. 任意android 手机支持daydream
  9. Wireshark抓取疯狂聊天数据包
  10. UE5 Strata material 初探