当前位置:   article > 正文

Vue搭配百度地图使用(实现最基础的展示) 并转化坐标数据_vue使用百度地图根据坐标显示位置

vue使用百度地图根据坐标显示位置

写了个移动端本来用的openlayers因为是公司技术栈也是刚学的吗  然后今天让改成百度地图....

大早上就开始翻网站浏览 幸亏功能不太复杂 就是展示地图并且根据后台返回的经纬度在地图上显示点位

使用前需要先去高德官网申请key值     高德官网

申请完后下载

npm i @amap/amap-jsapi-loader --save

然后初始化地图

  1. initMap() {
  2. AMapLoader.load({
  3. "key": "申请的key值",
  4. "version": "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
  5. "plugins": [], // 需要使用的的插件列表,如比例尺'AMap.Scale'
  6. }).then((AMap) => {
  7. // 处理格式
  8. const coordinateStr = this.coord.replace(/POINT\(|\)/gi, '');
  9. // 将剩下的字符串以空格为分隔符,分割成两个字符串
  10. const [lng, lat] = coordinateStr.split(' ');
  11. // 将两个字符串转换为数字类型
  12. const lngNum = parseFloat(lng);
  13. const latNum = parseFloat(lat);
  14. // 将两个数字放在一个数组中
  15. const Mapcenter = [lngNum, latNum];
  16. // 得到其中心点
  17. this.mapCenter = Mapcenter.slice(0, 2);
  18. // console.log(this.mapCenter);
  19. // 转化坐标系
  20. var result = gcoord.transform(
  21. this.mapCenter, // 经纬度坐标
  22. gcoord.WGS84, // 当前坐标系
  23. gcoord.AMap// 目标坐标系
  24. );
  25. // 新坐标
  26. var startLngLat = [result[0], result[1]];
  27. // console.log(startLngLat);
  28. // 标准图层
  29. var layer = new AMap.TileLayer({
  30. zooms: [3, 20], //可见级别
  31. visible: true, //是否可见
  32. opacity: 1, //透明度
  33. zIndex: 0, //叠加层级
  34. layers: [layer] //当只想显示标准图层时layers属性可缺省
  35. })
  36. // 初始化地图
  37. this.map = new AMap.Map('bai-du-map', {
  38. viewMode: "2D", // 是否为3D地图模式
  39. zoom: 18, // 初始化地图级别
  40. center: startLngLat, //中心点坐标 郑州
  41. resizeEnable: true
  42. });
  43. // 创建点标记
  44. var marker = new AMap.Marker({
  45. position: startLngLat, // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
  46. // title: '北京',
  47. icon: require('@/assets/index/dingwei-tu.png')
  48. });
  49. // 将创建的点标记添加到已有的地图实例:
  50. this.map.add(marker);
  51. }).catch(e => {
  52. // console.log(e);
  53. });
  54. }

两个空格空出来那个是我处理数据格式因为后台返回的是 WGS84地球坐标系 是不是有点蒙 我当时也是

坐标系简介

WGS84坐标系
即地球坐标系,国际上通用的坐标系。
设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系。谷歌地图采用的是WGS84地理坐标系(中国范围除外,谷歌中国地图采用的是GCJ02地理坐标系。)

GCJ02坐标系
即火星坐标系,WGS84坐标系经加密后的坐标系。
出于国家安全考虑,国内所有导航电子地图必须使用国家测绘局制定的加密坐标系统,即将一个真实的经纬度坐标加密成一个不正确的经纬度坐标。

BD09坐标系
即百度坐标系,GCJ02坐标系经加密后的坐标系。搜狗坐标系、图吧坐标系等,估计也是在GCJ02基础上加密而成的。

各主流地图API采用的坐标系
高德MapABC地图API 火星坐标
腾讯搜搜地图API 火星坐标
阿里云地图API 火星坐标
灵图51ditu地图API 火星坐标

百度地图API 百度坐标
搜狐搜狗地图API 搜狗坐标
图吧MapBar地图API 图吧坐标
 

上面处理完后 因为后台返回的是WGS84坐标系 而高德是火星坐标 要转化一下 不然位置会有点偏差 使用gcoord 来转化数据  官网

gcoord主要解决了两个问题

  • 能将坐标在不同坐标系下相互转换
  • 能够处理GeoJSON

GeoJSON是地理行业一种通用的数据格式,它本质上就是JSON,不过对字段有一些约定。

gcoord使用起来非常简单
例如从手机的GPS得到一个经纬度坐标,需要将其展示在百度地图上,则可以通过gcoord将当前坐标从WGS-84坐标系转换为BD-09坐标系

  1. var result = gcoord.transform(
  2. [ 116.403988, 39.914266 ], // 经纬度坐标
  3. gcoord.WGS84, // 当前坐标系
  4. gcoord.BD09 // 目标坐标系
  5. );
  6. console.log( result ); // [ 116.41661560068297, 39.92196580126834 ]

代码中使用

  1. // 转化坐标系 将WGS84转化为AMap
  2. var result = gcoord.transform(
  3. this.mapCenter, // 经纬度坐标
  4. gcoord.WGS84, // 当前坐标系
  5. gcoord.AMap// 目标坐标系
  6. );

就这吧 我是看网站写的代码 将就看吧 毕竟我也没写过这个

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/109807?site
推荐阅读
相关标签
  

闽ICP备14008679号