首页 > 其他分享 >vue中百度地图切换高德地图总结

vue中百度地图切换高德地图总结

时间:2024-11-14 16:40:21浏览次数:1  
标签:vue 地图 lat AMap var new lng 高德 Math

由于公司不续费百度地图,所以切换高德。。。

一、注册

  • 高德需要这样,先安装@amap/amap-jsapi-loader
 import AMapLoader from "@amap/amap-jsapi-loader";
 mapInit(point){
   window._AMapSecurityConfig = {
    // 安全密钥
    securityJsCode: "*********",//换成自己的
}
AMapLoader.load({
    key: "xxxxxxxxxx", // 申请好的Web端开发者Key,首次调用 load 时必填
    version: "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
    plugins: ["AMap.Geocoder","AMap.IndoorMap",'AMap.PlaceSearch','AMap.AutoComplete'], //需要使用的的插件列表,如比例尺'AMap.Scale',支持添加多个如:['...','...']
}).then((AMap) => {
    new AMap.Map(this.$refs.allmap, {
        // 设置地图容器id
        // viewMode: "3D", // 是否为3D地图模式
        mapStyle: "amap://styles/darkblue",
        showIndoorMap: true,
        zoom: this.zoom || 11,
        resizeEnable: true,
        center: new AMap.LngLat(105.000, 38.000), // 初始化地图中心点位置
    }) 
}

  • 百度需要在html中引入
<script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&ak="></script>

二、经纬度坐标转成容器像素坐标

new AMap.LngLat(point.lng, point.lat) //高德
new BMap.Point(point.lng, point.lat) //百度

三、标记点

  • 百度
let myIcon = new BMap.Icon(img, new BMap.Size(202, 120), {
            anchor: new BMap.Size(110, 65),
})
let marker = new BMap.Marker(point, {icon: myIcon});
map.addOverlay(marker);      //打点
  • 高德
let myIcon = new AMap.Icon( {
    size: new AMap.Size(202, 120),
    image: img, //Icon 的图像
    imageOffset: new AMap.Pixel(-1, -1), //图像相对展示区域的偏移量,适于雪碧图等
})
const marker = new AMap.Marker({
    position: _point, //点标记的位置
    offset: new AMap.Pixel(-100, -60), //偏移量
    icon: myIcon, //添加 Icon 实例
})
map.add(marker)

四、跳转到最佳视角

  • 百度数组是坐标点
const pointArr = [new BMap.Point(element.longitude, element.latitude)]
let center = this.map.getViewport(pointArr).center;
this.map.centerAndZoom(center, zoom);
  • 高德数组里是marker对象
 map.setFitView([ startMarker, endMarker, routeLine ])

五、高德、百度坐标系互相转换方法

//百度坐标转高德(传入经度、纬度)
export function bd2gd(bd_lng, bd_lat) {
    var X_PI = Math.PI * 3000.0 / 180.0;
    var x = bd_lng - 0.0065;
    var y = bd_lat - 0.006;
    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 gg_lng = z * Math.cos(theta);
    var gg_lat = z * Math.sin(theta);
    return {lng: gg_lng, lat: gg_lat}
}
//高德坐标转百度(传入经度、纬度)
export function gd2bd(gg_lng, gg_lat) {
    var X_PI = Math.PI * 3000.0 / 180.0;
    var x = gg_lng, y = gg_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_lng = z * Math.cos(theta) + 0.0065;
    var bd_lat = z * Math.sin(theta) + 0.006;
    return {
        lat: bd_lat,
        lng: bd_lng
    };
}

六、感受

开始以为很麻烦毕竟经纬度不同啊,api不同啊,切换后感觉高德快了不少,整个过程也没有想的那么复杂(主要我们的页面地图功能都很基础);

标签:vue,地图,lat,AMap,var,new,lng,高德,Math
From: https://www.cnblogs.com/wutong-211/p/18546361

相关文章

  • springboot+vue项目的线上部署(windows超详细版)
     引言关于linux操作系统的线上部署教程博客相当多,但是windows操作系统的教程却寥寥无几,今天我给大家介绍一下基于windows操作系统的云服务器上的springboot+vue项目线上部署教程准备工作1.准备一个云服务器,我选择的是阿里云ECS云服务器这里给大家留一个小门槛,去搞一台ECS......
  • 图片上传-1.弹窗切片VueCropper
    <template><divclass="user-info-head"@click="editCropper()"><img:src="options.img"title="点击上传头像"class="img-circleimg-lg"/><el-dialogv-model="open":title=......
  • vue2的uniapp添加用户登录校验
    在uni-app中实现全局路由守卫的确切方法可能会根据框架的版本和具体的实现方式有所不同。在Vue2和uni-app的结合使用中,全局路由守卫并不是原生支持的功能,因此我们需要采用一些替代方案。对于Vue2和uni-app,你可以通过封装uni-app的页面跳转方法来实现类似全局......
  • Vue2.0的v-model指令
    Vue2.0的v-model指令    v-model="属性"写在标签中上,相当于在一个标签上,同时写了  :value='属性值'  @iinput='handler' ,而handler对应的函数如果没有声明,就是给该属性值赋值的setter函数代码一: <!DOCTYPEhtml><htmllang="en"><head><meta......
  • Vue2.0计算属性
     Vue2.0计算属性:     计算属性:通过计算得到一个属性,避免v-if和v-for出现在同一个标签上  <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initia......
  • 085Java+Spring Boot+Vue微信小程序的妆造服务平台的设计与实现
    项目截图Java语言介绍Java语言是目前最受欢迎的一种高级语言,它是一种类C的语言,将C和C++的优势结合在一起,但又舍弃了各自的劣势,在Java语言中,所有的东西都是对象。这使得Java语言的开发工作变得更为高效。Java语言所依靠的开发环境中,最重要的一部分就是JDK......
  • 075Java+Spring Boot+Vue婴儿辅食推荐系统
    项目截图Java语言介绍Java语言是目前最受欢迎的一种高级语言,它是一种类C的语言,将C和C++的优势结合在一起,但又舍弃了各自的劣势,在Java语言中,所有的东西都是对象。这使得Java语言的开发工作变得更为高效。Java语言所依靠的开发环境中,最重要的一部分就是JDK,只......
  • vue项目部署后刷新页面404的原因和解决方案
     一、这是为什么,我们先来了解下vue路由两种模式的区别。newRouter({mode:'hash',//historyroutes:[],...})1.hash模式(默认)的访问URL中有#字符,history模式的URL没有带#,外观上history模式比hash模式好看些;2.hash模式通过监听浏览器的onhashchange()......
  • vite3+vue3 实现前端部署加密混淆 javascript-obfuscator
    安装pnpminstalljavascript-obfuscator安装之后在项目根目录新建一个obfuscator.js在obfuscator.js写入以下代码直接复制粘贴`/**@用法vite打包完成后,使用命令行nodejs执行本文件:nodeobfuscator.js它会挨个把里面的js文件做混淆然后替换@说明本质就是依......
  • 【2024最新】基于springboot+vue的校园闲置物品交易网站平台lw+ppt
    作者:计算机搬砖家开发技术:SpringBoot、php、Python、小程序、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。专栏推荐:SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码精品专栏:Java精选实战项目源码、Python精选实战项目源码、大数据精选实战项目源码......