• [vue]——vue3.0+高德地图的正确打开方式


    开始前,先记录一个一直困扰我的问题:

    在vue中使用element-ui库中的标签时,发现修改库中标签的样式时出现样式不生效,问题就出在style设置中加了 scoped属性

    • style的scoped属性: 代表全局有效。去掉后当前style中的所有的样式就只作用于当前组件,不会对全局样式造成污染。

    接下来言归正转开始我们的高德地图集成:

    JSAPI结合Vue使用-JSAPI与前端框架结合-教程-地图 JS API v2.0 | 高德地图API

    在使用官方提供的文档时,针对web端的一般看 Web服务API地图JS API即可

    1、JSAPI Loader安装

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

    这里需要注意注意的是,在安装完Loader后,不需要在VUE项目中做任何配置,仅需在当前项目中创建一个单独的vue文件,用作地图组件

    2、地图组建的准备

    (1)在组件中导入loader

    import AMapLoader from '@amap/amap-jsapi-loader';

    (2)配置安全密钥

    1. window._AMapSecurityConfig = {
    2. securityJsCode: '你的安全密钥'
    3. }

    (3)准备div容器

    即在准备阶段所创建的指定了iddiv对象,这个div将作为承载所有图层、点标记、矢量图形、控件的容器。

    1. <template>
    2. <div id="container"></div>
    3. </tempalte>
    4. <script></script>
    5. <style lang="less">
    6. #container {
    7. width: 100%;
    8. height: 100%;
    9. }
    10. </style>

    (4)初始化地图

    1. <template>
    2. <div id="container"></div>
    3. </template>
    4. <script>
    5. import AMapLoder from '@amap/amap-jsapi-loader'
    6. window._AMapSecurityConfig = {
    7. securityJsCode: '你的安全密钥'
    8. }
    9. export default {
    10. name: 'MapContainer',
    11. data() {
    12. return {
    13. map: null
    14. }
    15. },
    16. mounted() {
    17. this.initMap()
    18. },
    19. methods: {
    20. initMap() {
    21. AMapLoder.load({
    22. key: '你的key',
    23. version: '2.0',
    24. plugins: ['AMap.Autocomplete', 'AMap.PlaceSearch', 'AMap.Scale', 'AMap.OverView', 'AMap.ToolBar', 'AMap.MapType', 'AMap.PolyEditor', 'AMap.CircleEditor']
    25. }).then(AMap => {
    26. this.map = new AMap.Map("container",{ //设置地图容器id
    27. viewMode:"3D", //是否为3D地图模式
    28. zoom:5, //初始化地图级别
    29. center:[105.602725,37.076636], //初始化地图中心点位置
    30. })
    31. }).catch(e=>{
    32. console.log(e);
    33. })
    34. },
    35. }
    36. }
    37. </script>
    38. <style scoped lang="less">
    39. #container {
    40. width: 100%;
    41. height: 100%;
    42. }
    43. </style>

    其中,plugin中指定了在开发过程中需要使用到的插件:

    plugins: ['AMap.Autocomplete', 'AMap.PlaceSearch', 'AMap.Scale', 'AMap.OverView', 'AMap.ToolBar', 'AMap.MapType', 'AMap.PolyEditor', 'AMap.CircleEditor']

    3、在地图中加入多个标记

    点标记(Marker)适用于用户需要在地图上创建一个标记的场景。Marker 类型推荐在数据量为 500 以内时使用。若数据量大于 500 ,推荐使用 LabelMarker,可以获得更好的性能。另外需要地图标注可以避让用户标注时,也推荐使用 LabelMarker。在使用的过程中,需要提供的是一组地址列表(经纬度格式的)

    1. initMap() {
    2. AMapLoder.load({
    3. key: '你的key',
    4. version: '2.0',
    5. plugins: ['AMap.Autocomplete', 'AMap.PlaceSearch', 'AMap.Scale', 'AMap.OverView', 'AMap.ToolBar', 'AMap.MapType', 'AMap.PolyEditor', 'AMap.CircleEditor']
    6. }).then(AMap => {
    7. this.map = new AMap.Map("container",{ //设置地图容器id
    8. viewMode:"3D", //是否为3D地图模式
    9. zoom:5, //初始化地图级别
    10. center:[105.602725,37.076636], //初始化地图中心点位置
    11. })
    12. console.log(this.addressList)
    13. let iteminfo = this.addressList
    14. //不断的创建Marker对象,然后依次添加到地图中即可实现多点标注
    15. for(let index = 0; index < this.addressList.length; index++) {
    16. let marker = new AMap.Marker({
    17. title: this.factoryNameList[index],
    18. position: [parseFloat(iteminfo[index][0]), parseFloat(iteminfo[index][1])]
    19. })
    20. this.map.add(marker)
    21. }
    22. }).catch(e=>{
    23. console.log(e);
    24. })
    25. },

  • 相关阅读:
    Spring Security认证器实现
    历时30天的腾讯软件测试岗面试血泪史,最终拿到offer25K+16薪
    2021年9月电子学会图形化二级编程题解析含答案:画正多边形
    -贪吃蛇-
    探索数据库的世界:DB、DBMS、DBA、DBS的全面介绍
    圆心科技,很焦虑?
    idea连接redis
    React基础
    史上最简单清晰的ThreadLocal讲解,呕心沥血,你确定不看吗?
    react-native 打包报错 android-gradle-plugin-requires-java-11
  • 原文地址:https://blog.csdn.net/weixin_42067873/article/details/125456930