关于定位,分为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/]。

转载于:https://www.cnblogs.com/telwanggs/p/6484175.html

高德地图api之location定位相关推荐

  1. Android使用高德地图api实现基础定位

    Android使用高德地图api实现基础定位(一) 关于 会获取SHA1的可自行跳过这一步 第二步引用高德sdk 第三步修改MainActivity.java 关于 这篇主要讲如何使用高德sdk(不是 ...

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

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

  3. 高德地图API之IP定位

    高德地图API之IP定位(替换你的KEY) IP定位API:http://lbs.amap.com/api/webservice/guide/api/ipconfig package com.gdma ...

  4. 关于在vue2.X中使用高德地图api获取用户定位

    最近开发的MOA考试端需要获取到当前考试用户的定位,公司没有自己的定位组件,所以需要接入高德地图api 废话不多说,直接上操作步骤. 1.首先上高德地图API的官网,高德地图API官网, 跟着以上的步 ...

  5. Vue+高德地图API的使用(定位打卡)

    接上之前的项目 Vue+高德地图API的使用 Vue+高德地图API的使用(插件的使用) 1.页面布局 绘制页面 <div class="Clock"><!-- ...

  6. 通过高德地图API实现浏览器定位[以及提高定位精度、获取详细位置信息]

    目录 一.前言: 二.正文: 1.注册高德地图开发者.创建应用 2.借助官方的示例开发 3.对官方的开发示例进行修改 4.获取详细位置信息 5.详细代码 三.结尾:小周接触编程时间不长,刚起步,有更好 ...

  7. 高德h5定位误差_#高德地图api移动端定位失败解决方案 #H5 原生Geollocation接口Chomre浏览器的坑...

    侧重:本文探索了 http 协议下,pc + 移动端定位解决方案 IOS版本: ios14 原生Geolocation 接口: Document Show my location function g ...

  8. H5开发:调用高德地图api实现H5定位功能

    关于定位,分为GPS定位和网络定位.本文将详细描述的浏览器定位,属于网络定位.这是一种通过使用高德JS-API来实现位置定位.城市定位的方法,包含了IP定位,检索等多种网络定位方式.如果您的手机支持G ...

  9. vue 实现 高德地图 api 掩模、定位、天气

    vue渲染掩模.定位.天气. /* #app.vue中的代码或其他vue文件 #public/index.html需要引入 高德地图jsapi*/ <script type="text ...

最新文章

  1. [转] java的 Collection 和 Map 详解
  2. 【Python】 1055 集体照 (25 分)
  3. FactoryBean 源码
  4. word标题大纲级别_快速按标题层级把Word转Excel—附详细操作步骤
  5. 天气预报的Ajax效果
  6. html生成原理,Axure生成HTML的原理是什么?
  7. Python 进程锁使用
  8. 网站流量和金钱的关系
  9. 第十二届蓝桥杯大赛软件赛决赛题解
  10. 按键双击和单击c语言,按键单击与双击
  11. 计算机一级查询证书编号,如何查询计算机一级证书编号
  12. 班长团支书福音——爬虫+腾讯云短信平台实现自动提醒同学体温上报 【附源码】
  13. duble 和 float 小数的位数
  14. 【opencv】颜色空间总结
  15. 44444444444444
  16. cxxxxx和xxxxx.h的区别
  17. NJU-ICS-linklab 从零开始复习程序的链接与ELF
  18. 抖音超市开张了 王兴和梁汝波为何都念起了“超市经”?
  19. 再一次感受爱的力量!
  20. 有趣之-图书管理系统

热门文章

  1. linux下.xz文件的解压方式
  2. vue 七牛上传图片
  3. 破解思科系列防火墙密码
  4. 神经网络真实值和预测值,神经网络算法预测股票
  5. FL Studio21最新演示测试版本下载FL水果V21
  6. 2023年政府飞地经济研究报告
  7. 降级预案在同程艺龙的工程实践【含ppt下载】
  8. 【SFS线性化方法】Tsai方法在侧扫声呐中的应用(一)
  9. 2017-8-27 R语言学习路线
  10. JVM之Java内存模型(基于《深入理解Java虚拟机》之第12章Java内存模型与线程)(上)