在vue3项目中如何使用新版高德地图

 5646

vue3项目中如何使用新版高德地图,本文详细介绍vue3项目中使用高德地图的方法。

1、首先你要注册好账号登录

在vue3项目中如何使用新版高德地图


2、获取key和密钥 

在vue3项目中如何使用新版高德地图

在vue3项目中如何使用新版高德地图


自2021年12月02日升级,升级之后所申请的 key 必须配备安全密钥 jscode 一起使用


在vue3项目中如何使用新版高德地图


NPM方式安装和使用(基础版):         

按 NPM 方式安装使用 Loader :

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

在页面中通过NPM 方式安装的使用 :

  1. <template>
  2.     <div class="app-container">
  3.         <div style="background-color: #ffffff;">
  4.             <div id="container"></div>
  5.         </div>
  6.     </div>
  7. </template>
  8.   
  9. <script setup>
  10. import AMapLoader from '@amap/amap-jsapi-loader';
  11. /*在Vue3中使用时,需要引入Vue3中的shallowRef方法(使用shallowRef进行非深度监听,
  12. 因为在Vue3中所使用的Proxy拦截操作会改变JSAPI原生对象,所以此处需要区别Vue2使用方式对地图对象进行非深度监听,
  13. 否则会出现问题,建议JSAPI相关对象采用非响应式的普通对象来存储)*/
  14. import { shallowRef } from '@vue/reactivity';
  15. import {ref} from "vue";
  16.   
  17. // const map = shallowRef(null);
  18. const path = ref([]);
  19. const current_position = ref([]);
  20.   
  21. function initMap() {
  22.     window._AMapSecurityConfig = {
  23.         securityJsCode: '8e920f73eb2e6880a92ea6662eefc476',
  24.     }
  25.     AMapLoader.load({
  26.         key:"e4e3d44a98350790a1493450032bbec5", // 申请好的Web端开发者Key,首次调用 load 时必填
  27.         version:"2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
  28.         plugins:[''], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
  29.     }).then((AMap)=>{
  30.         const map = new AMap.Map("container",{  //设置地图容器id
  31.             viewMode:"3D",    //是否为3D地图模式
  32.             zoom:13,           //初始化地图级别
  33.             center:[113.808299,34.791787], //初始化地图中心点位置
  34.         });
  35.          
  36.     }).catch(e=>{
  37.         console.log(e);
  38.     })
  39. }
  40.   
  41.     initMap()
  42. </script>
  43.   
  44. <style>
  45. #container{
  46.     padding:0px;
  47.     margin: 0px;
  48.     width: 100%;
  49.     height: 800px;
  50. }
  51. </style>

完整代码:

  1. <template>
  2.     <div class="app-container">
  3.         <div style="background-color: #ffffff;">
  4.             <div id="container"></div>
  5.         </div>
  6.     </div>
  7. </template>
  8.   
  9. <script setup>
  10. import AMapLoader from '@amap/amap-jsapi-loader';
  11. /*在Vue3中使用时,需要引入Vue3中的shallowRef方法(使用shallowRef进行非深度监听,
  12. 因为在Vue3中所使用的Proxy拦截操作会改变JSAPI原生对象,所以此处需要区别Vue2使用方式对地图对象进行非深度监听,
  13. 否则会出现问题,建议JSAPI相关对象采用非响应式的普通对象来存储)*/
  14. import { shallowRef } from '@vue/reactivity';
  15. import {ref} from "vue";
  16.   
  17. // const map = shallowRef(null);
  18. const path = ref([]);
  19. const current_position = ref([]);
  20.   
  21.   
  22. function initMap() {
  23.     window._AMapSecurityConfig = {
  24.         securityJsCode: '8e920f73eb2e6880a92ea6662eefc476',
  25.     }
  26.     AMapLoader.load({
  27.         key:"e4e3d44a98350790a1493450032bbec5", // 申请好的Web端开发者Key,首次调用 load 时必填
  28.         version:"2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
  29.         // plugins:[''], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
  30.     }).then((AMap)=>{
  31.         const map = new AMap.Map("container",{  //设置地图容器id
  32.             viewMode:"3D",    //是否为3D地图模式
  33.             zoom:13,           //初始化地图级别
  34.             center:[113.808299,34.791787], //初始化地图中心点位置
  35.         });
  36.         // 添加插件
  37.         AMap.plugin(["AMap.ToolBar", "AMap.Scale", "AMap.HawkEye","AMap.Geolocation","AMap.MapType","AMap.MouseTool"], function () {
  38.             //异步同时加载多个插件
  39.             // 添加地图插件
  40.             map.addControl(new AMap.ToolBar()); // 工具条控件;范围选择控件
  41.             map.addControl(new AMap.Scale()); // 显示当前地图中心的比例尺
  42.             map.addControl(new AMap.HawkEye()); // 显示缩略图
  43.             map.addControl(new AMap.Geolocation()); // 定位当前位置
  44.             map.addControl(new AMap.MapType()); // 实现默认图层与卫星图,实时交通图层之间切换
  45.   
  46.             // 以下是鼠标工具插件
  47.             const mouseTool = new AMap.MouseTool(map);
  48.             // mouseTool.rule();// 用户手动绘制折线图,测量距离
  49.             mouseTool.measureArea(); // 测量面积
  50.         });
  51.         // 单击
  52.         map.on('click',(e) => {
  53.             // lng ==> 经度值  lat => 维度值
  54.             current_position.value = [e.lnglat.lng,e.lnglat.lat];
  55.             path.value.push([e.lnglat.lng,e.lnglat.lat]);
  56.             // addMarker();
  57.             // addPolyLine();
  58.         })
  59.   
  60.   
  61.         // 实例化点标记
  62.         // 第一种(封成函数来触发)
  63.         function addMarker() {
  64.             const marker = new AMap.Marker({
  65.                 icon: "//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png",
  66.                 position: current_position.value, // 这里我们通过上面的点击获取经纬度坐标,实时添加标记
  67.                 // 通过设置 offset 来添加偏移量
  68.                 offset: new AMap.Pixel(-26, -54),
  69.             });
  70.             marker.setMap(map);
  71.         }
  72.         // 第二种 直接写死 position 的经纬度值
  73.         /*const marker = new AMap.Marker({
  74.             icon: "//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png",
  75.             position: [113.808299,34.791787],
  76.             // 通过设置 offset 来添加偏移量
  77.             offset: new AMap.Pixel(-26, -54),
  78.         });
  79.         marker.setMap(map);*/
  80.   
  81.   
  82.         // 折线
  83.         function addPolyLine() {
  84.             const polyline = new AMap.Polyline({
  85.                 path: path.value,
  86.                 isOutline: true,
  87.                 outlineColor: "#ffeeff",
  88.                 borderWeight: 1,
  89.                 strokeColor: "#3366FF",
  90.                 strokeOpacity: 0.6,
  91.                 strokeWeight: 5,
  92.                 // 折线样式还支持 'dashed'
  93.                 strokeStyle: "solid",
  94.                 // strokeStyle是dashed时有效
  95.                 // strokeDasharray: [10, 5],
  96.                 lineJoin: "round",
  97.                 lineCap: "round",
  98.                 zIndex: 50,
  99.             });
  100.             map.add([polyline]);
  101.         }
  102.   
  103.   
  104.   
  105.     }).catch(e=>{
  106.         console.log(e);
  107.     })
  108. }
  109.   
  110. initMap()
  111. </script>
  112.   
  113. <style>
  114. #container{
  115.     padding:0px;
  116.     margin: 0px;
  117.     width: 100%;
  118.     height: 800px;
  119. }
  120. </style>


地图插件效果图:


在vue3项目中如何使用新版高德地图


实例化点标记 :

第一种方式效果:


在vue3项目中如何使用新版高德地图


第二种方式效果:


在vue3项目中如何使用新版高德地图


矢量图 --> 折线:


在vue3项目中如何使用新版高德地图


感谢各位的阅读,以上就是“在vue3项目中如何使用新版高德地图”的内容了,经过本文的学习后,相信大家对在vue3项目中如何使用新版高德地图这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。


TAG标签:
本文网址:https://www.zztuku.com/detail-14208.html
站长图库 - 在vue3项目中如何使用新版高德地图
申明:如有侵犯,请 联系我们 删除。

评论(0)条

您还没有登录,请 登录 后发表评论!

提示:请勿发布广告垃圾评论,否则封号处理!!

    编辑推荐