首页 > 其他分享 >移动端百度地图精准获取当前位置

移动端百度地图精准获取当前位置

时间:2023-11-03 16:24:33浏览次数:33  
标签:地图 精准 lon var 百度 lat pi sin Math

Vue主要代码如下:

import {wgs2bd} from "@views/webApp/comp/appUtil";

methods: {
    getCurrentLocation(){
      navigator.geolocation.getCurrentPosition((res)=>{
        let point = wgs2bd(res.coords.latitude,res.coords.longitude)
        // IP地址放入缓存
        localStorage.setItem("longitude",point[1]);
        localStorage.setItem("latitude",point[0]);
        console.log(res)
      },(err)=>{
        console.log(err)
      },{
        enableHighAcuracy: true, //位置是否精确获取
        timeout: 6000,//获取位置允许的最长时间
        maximumAge: 0 //多久更新获取一次位置
      })
    },
},

坐标转换js代码如下:

//坐标转换核心代码
var pi = 3.14159265358979324;
var a = 6378245.0;
var ee = 0.00669342162296594323;
var x_pi = 3.14159265358979324*3000.0/180.0;


//世界大地坐标转为百度坐标
export function wgs2bd(lat,lon) {
  var wgs2gcjR = wgs2gcj(lat, lon);
  var gcj2bdR = gcj2bd(wgs2gcjR[0], wgs2gcjR[1]);
  return gcj2bdR;
}

function gcj2bd(lat,lon) {
  var x = lon, y = lat;
  var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);
  var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);
  var bd_lon = z * Math.cos(theta) + 0.0065;
  var bd_lat = z * Math.sin(theta) + 0.006;
  var result = [];
  result.push(bd_lat);
  result.push(bd_lon);
  return result;
}

function wgs2gcj(lat,lon) {
  var dLat = transformLat(lon - 105.0, lat - 35.0);
  var dLon = transformLon(lon - 105.0, lat - 35.0);
  var radLat = lat / 180.0 * pi;
  var magic = Math.sin(radLat);
  magic = 1 - ee * magic * magic;
  var sqrtMagic = Math.sqrt(magic);
  dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);
  dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi);
  var mgLat = lat + dLat;
  var mgLon = lon + dLon;
  var result = [];
  result.push(mgLat);
  result.push(mgLon);
  return result;
}

function transformLat(lat,lon) {
  var ret = -100.0 + 2.0 * lat + 3.0 * lon + 0.2 * lon * lon + 0.1 * lat * lon + 0.2 * Math.sqrt(Math.abs(lat));
  ret += (20.0 * Math.sin(6.0 * lat * pi) + 20.0 * Math.sin(2.0 * lat * pi)) * 2.0 / 3.0;
  ret += (20.0 * Math.sin(lon * pi) + 40.0 * Math.sin(lon / 3.0 * pi)) * 2.0 / 3.0;
  ret += (160.0 * Math.sin(lon / 12.0 * pi) + 320 * Math.sin(lon * pi  / 30.0)) * 2.0 / 3.0;
  return ret;
}

function transformLon(lat,lon) {
  var ret = 300.0 + lat + 2.0 * lon + 0.1 * lat * lat + 0.1 * lat * lon + 0.1 * Math.sqrt(Math.abs(lat));
  ret += (20.0 * Math.sin(6.0 * lat * pi) + 20.0 * Math.sin(2.0 * lat * pi)) * 2.0 / 3.0;
  ret += (20.0 * Math.sin(lat * pi) + 40.0 * Math.sin(lat / 3.0 * pi)) * 2.0 / 3.0;
  ret += (150.0 * Math.sin(lat / 12.0 * pi) + 300.0 * Math.sin(lat / 30.0 * pi)) * 2.0 / 3.0;
  return ret;
}

 

标签:地图,精准,lon,var,百度,lat,pi,sin,Math
From: https://www.cnblogs.com/henuyuxiang/p/17807830.html

相关文章

  • QT使用QML实现地图绘制虚线
    QML提供了MapPolyline用于在地图上绘制线段,该线段是实线,因此我使用Canvas自定义绘制的方式在地图上绘制线段,如图:鼠标在地图上点击后,在点击位置添加图标,当有多个图标被添加到地图上后,计算各个图标间的距离,并创建一个新的虚线线段组件,连接两个图标点,显示距离数值。如果对自定义图标......
  • 2023年11月最新全国省市区县和乡镇街道行政区划矢量边界坐标经纬度地图数据 shp geojs
    发现个可以免费下载全国 geojson 数据的网站,推荐一下。支持全国、省级、市级、区/县级、街道/乡镇级以及各级的联动数据,支持导入矢量地图渲染框架中使用,例如:D3、Echarts等geojson数据下载地址:https://geojson.hxkj.vip该项目github地址:https://github.com/TangSY/echarts-m......
  • 屏蔽百度热搜榜
    电脑上网查询资料或者问题时,百度热搜榜紧贴着搜索结果,且占了将近一半的页面,此时注意力很容易被分散,有时候点几个吸引人的热搜后就忘了一开始要做的事情。因此,屏蔽百度热搜榜很有必要。但是百度设置是不能关闭热搜榜的,所以我们需要借助一些插件来实现。 下面介绍windows10Edge......
  • 百度AICA首席AI架构师培养计划第七期毕业,大模型深入产业见成果
    10月28日,由深度学习技术及应用国家工程研究中心与百度联合创办的AICA首席AI架构师培养计划,迎来第7期毕业典礼,88位学员获得AI架构师认证。截至目前,AICA已累计为业界培养了410位产业AI领军人才。同时,AICA第7期毕业学员约有三分之一聚焦大模型产业应用课题并取得先期成果。百度文心......
  • 百度Comate代码助手全新上线SaaS服务,适配百种开发语言,编码效率10倍提升!
    1024程序员节来临之际,百度智能云宣布百度Comate智能代码助手正式上线SaaS版本,可提供10余项编码功能,适配100种开发语言,面向广大企业和开发者提供更便捷、更灵活的智能编码工具,助力企业提升研发效率。即日起企业和开发者可前往百度Comate官网体验。百度Comate是百度智能云基于文心大......
  • 数智化推送助力用户精准分层,MobPush是如何实现用户价值变现的
    随着移动设备普及,移动应用市场日益趋于饱和,传统的拉新促活、提升APP用户数,利用庞大的用户流量带来的广告收入、第三方合作等方式实现价值变现的路径已越来越窄,拉新促活成本的高企不下进一步限制了这种价值增长方式的可行性。因此,如何通过精准的用户分层,识别潜在的高价值、高粘度、......
  • 【百度智慧云】语音技术-短语音识别 JavaScript
    提要代码目的:通过JavaScript代码,完成用百度智能云的语音技术-短语音识别功能,实现语音转文字效果。需要先有百度智慧云账户,且开通短语音试别业务以下是使用到的数据信息:AccessToken获取方式cuid获取方式测试音频点击下载-JianWangChao.wav点击下载-jiarenmen.wav......
  • Charles 抓取百度指数及微信指数
    一、百度指数  filter:/api/SearchApi/index//搜索指数 filter:/api/SearchApi/index//搜索指数 找到uniqid,继续filter,获取data(用于解密)  filter: api/SearchApi/index,获取对应指数数据用于解密,页面控制台解密: 解密代码functiondecrypt(t,e......
  • 21.4 Python 使用GeoIP2地图定位
    GeoIP2是一种IP地址定位库,它允许开发人员根据IP地址查找有关位置和地理位置的信息。它使用MaxMind公司的IP地址数据库,并提供一个方便的PythonAPI。GeoIP2可以用于许多不同的应用程序,例如网站分析、广告定位和身份验证。GeoIP2提供了许多不同的信息,例如国家、城市、邮政编码、经纬......
  • 21.4 Python 使用GeoIP2地图定位
    GeoIP2是一种IP地址定位库,它允许开发人员根据IP地址查找有关位置和地理位置的信息。它使用MaxMind公司的IP地址数据库,并提供一个方便的PythonAPI。GeoIP2可以用于许多不同的应用程序,例如网站分析、广告定位和身份验证。GeoIP2提供了许多不同的信息,例如国家、城市、邮政编码、经纬......