vue使用高德AMap (持续更新中......)

先来上链接 ~

高德开放平台 | 高德地图API高德开放平台|高德开放平台官网|高德开放平台控制台|官网控制台|控制台|应用管理|应用分析|账号信息|开发者信息|账号权限|KEY管理icon-default.png?t=N7T8https://lbs.amap.com/

官网说的很清楚哦,一切开始之前,要去申请key安全密钥  准备-地图 JS API 2.0 | 高德地图API

使用npm安装依赖:

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

 页面中引用:

import AMap from "@amap/amap-jsapi-loader";

 生成地图

  在vue的生命周期onMounted中使用AMap.load生成地图

<template>
  <!-- 设置一个放地图的容器 -->
  <div id="container"></div>    
</template>
<script setup>
import { onMounted, ref } from "vue";
import AMap from "@amap/amap-jsapi-loader";

onMounted(() => {
  AMap.load({
    key: "0217a7ee99b9adf5d20a913916186b24", //填写自己的key,这里是用来演示
    version: "2.0",
    plugins: ["AMap.Scale"],
  }).then((AMap) => {
    const map = new AMap.Map("container", {     
      resizeEnable: true,   //自动调整大小
      rotateEnable: true,   //是否支持旋转功能
      pitchEnable: true,    //是否支持倾斜功能
      zoom: 17,     //地图的缩放级别
      pitch: 50,    //初始倾斜角度,增加三维效果
      zooms: [3, 20],//缩放级别范围
      center: [113.445306, 23.118697],  //中心点坐标
      mapStyle: "amap://styles/nomal",  //主题
    });
  });
});
</script>

<style scoped>
#container {
  width: 500px;
  height: 500px;
}
</style>

  一张最简单的地图就生成啦:

旋转x-y轴

如果要改变地图的方向,可以使用以下方式:注意 要加上 viewMode:'3D' 这个属性

 viewMode:'3D'

 var rotationAngle = -90  //设置旋转角度,单位为度
 map.setRotation(rotationAngle)

卫星图层

如果要在地图上添加卫星图层展示真实地貌,两行代码就可以啦:

 // 创建卫星地图图层并添加到地图上
    const satelliteLayer = new AMap.TileLayer.Satellite();
    map.add(satelliteLayer);

效果: 

添加线段

 注意 path的格式哦【【】,【】,【】,【】.....】

 //添加线段
    const path = [
      [116.368904, 39.913423],
      [113.445306, 23.118697],
      [113.361719, 28.241825],
    ];
    // 创建线条并添加到地图上
    const line = new AMap.Polyline({
      path: path,
      isOutline: false, //线条是否带描边,默认false
      outlineColor: "#ffeeff", //线条描边颜色,此项仅在isOutline为true时有效,默认:#000000
      borderWeight: 4, //描边的宽度,默认为1
      strokeColor: "#3366FF", //线条颜色,使用16进制颜色代码赋值。默认值为#006600
      strokeOpacity: 1, //线条透明度,取值范围[0,1],0表示完全透明,1表示不透明。默认为0.9
      strokeWeight: 5, //线条宽度,单位:像素
      // 折线样式还支持 'dashed'
      strokeStyle: "dashed", //线样式,实线:solid,虚线:dashed
      // strokeStyle是dashed时有效
      strokeDasharray: [10, 5], //勾勒形状轮廓的虚线和间隙的样式,此属性在strokeStyle 为dashed 时有效
      lineJoin: "round", //折线拐点的绘制样式,默认值为'miter'尖角,其他可选值:'round'圆角、'bevel'斜角
      lineCap: "round", //折线两端线帽的绘制样式,默认值为'butt'无头,其他可选值:'round'圆头、'square'方头
      zIndex: 50, //折线覆盖物的叠加顺序。默认叠加顺序,先添加的线在底层,后添加的线在上层。通过该属性可调整叠加顺序,使级别较高的折线覆盖物在上层显示默认zIndex:50、
    });
    map.add(line);

添加Marker点标记

 const marker = new AMap.Marker({
      position: [113.445306, 23.118697],
      title: "一个点", //鼠标滑过点标记时的文字提示,不设置则鼠标滑过点标无文字提示
      offset: [2, 0], //点标记显示位置偏移量,默认值为[0,0]
    });
    map.add(marker);

注意 AMap.Marker 期望的只能是一个单一的坐标,如果要添加多个点,可以使用循环来实现,每个标记使用数组中的一个坐标值:

 //添加多个点标记
    const coords = [
      [116.368904, 39.913423],
      [113.445306, 23.118697],
      [113.361719, 28.241825],
    ];
    // 遍历坐标数组,为每个坐标创建一个标记并添加到地图上
    coords.forEach((coord) => {
      const marker = new AMap.Marker({
        position: coords,
        title: "一个点",
        offset: [2, 0],
      });
      map.add(marker);
    });

这样就可以添加多个点啦:

Marker点击事件

注意 这个事件也要写在遍历坐标数组的循环

 // 监听标记的点击事件
      marker.on("click", function (e) {
        console.log(e);
        const position = e.target.getPosition(); // 获取点击标记的位置信息
        console.log("当前坐标是", [position.lng, position.lat]);
      });

地图点击事件

 点击地图 使用 e.lnglat.getLng() 和 e.lnglat.getLat() 方法,获取当前点击的坐标经纬度

 //点击地图获取坐标
    map.on("click", (e) => {
      const lng = e.lnglat.getLng();
      const lat = e.lnglat.getLat();
      console.log(lng, lat);
    });

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果在Vue项目使用高德地图时遇到了“AMap.Driving is not a constructor”错误,这可能是因为您未正确引入Driving插件或引入方式不正确。 在Vue项目使用高德地图,可以通过在main.js文件引入高德地图API并注册为全局变量来实现全局使用。例如: ```javascript // main.js import Vue from 'vue' import App from './App.vue' // 引入高德地图API import AMap from 'AMap' Vue.config.productionTip = false // 注册高德地图API为全局变量 Vue.prototype.AMap = AMap new Vue({ render: h => h(App), }).$mount('#app') ``` 在上面的代码,我们引入了高德地图API,并通过Vue.prototype将其注册为Vue的全局变量,使其在所有组件可用。 然后,您可以在Vue组件使用AMap对象和Driving类来计算路线并绘制路径。例如: ```javascript <template> <div id="mapContainer" style="height:500px"></div> </template> <script> export default { data() { return { map: null, driving: null } }, mounted() { // 初始化地图 this.map = new this.AMap.Map('mapContainer', { center: [116.397428, 39.90923], zoom: 13 }); // 创建Driving对象 this.driving = new this.AMap.Driving({ map: this.map, panel: 'panel' }); // 计算路线 var points = [ [116.379028, 39.865042], [116.414032, 39.865042], [116.414032, 39.899042], [116.379028, 39.899042] ]; this.driving.search(points, (status, result) => { if (status === 'complete' && result.info === 'OK') { // 获取路线经纬度坐标数组 var path = result.routes[0].path; // 创建Polyline对象绘制路径曲线 var polyline = new this.AMap.Polyline({ path: path, strokeColor: '#3366FF', strokeWeight: 5, strokeOpacity: 0.8 }); polyline.setMap(this.map); } else { alert('路线计算失败'); } }); } } </script> ``` 在上面的代码,我们在Vue组件的mounted生命周期函数创建了地图和Driving对象,并计算了路线。请注意,我们使用Vue.prototype.AMap和this.AMap来访问全局的AMap对象,并使用this.AMap.Driving来访问Driving类。这样,您就可以在Vue项目使用高德地图API,而不必担心“AMap.Driving is not a constructor”错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值