• 【vue3/高德地图】实现地图打点/自定义点位图标/地理围栏实现


    在这里插入图片描述

    <template>
        <div class="app-container">
                <div id="container">div>
        div>
    template>
     
    <script setup>
    import AMapLoader from '@amap/amap-jsapi-loader';
    /*在Vue3中使用时,需要引入Vue3中的shallowRef方法(使用shallowRef进行非深度监听,
    因为在Vue3中所使用的Proxy拦截操作会改变JSAPI原生对象,所以此处需要区别Vue2使用方式对地图对象进行非深度监听,
    否则会出现问题,建议JSAPI相关对象采用非响应式的普通对象来存储)*/
    import { shallowRef } from '@vue/reactivity';
    import { ref, reactive} from "vue";
    import geojsonData from '../assets/huzhou_division'
    
    
    const allMap = shallowRef(null);
    
    function initMap() {
        window._AMapSecurityConfig = {
            securityJsCode: '',
        }
        AMapLoader.load({
            key: "", // 申请好的Web端开发者Key,首次调用 load 时必填
            version: "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
            plugins: ["AMap.GeoJSON"], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
    
        }).then((AMap) => {
            const map = new AMap.Map("container", {  //设置地图容器id
                viewMode: "2D",    //是否为3D地图模式
                zoom: 10,           //初始化地图级别
                center: [119.898881, 30.594178], //初始化地图中心点位置
                mapStyle: 'amap://styles/',
    
            });
            allMap.value = map
    
    
    // 点位信息
            const markerdata = reactive([[119.898881, 30.794178], [119.998881, 30.794178], [119.798881, 30.794178], [119.698881, 30.794178], [120.098881, 30.794178]])
    
    // 适用于少数点
            markerdata.forEach(element => {
                // 创建 AMap.Icon 实例:
                const icon = new AMap.Icon({
                    size: new AMap.Size(50, 60),    // 图标尺寸
                    
                    // vue3/vite 需要用特定的本地图片引入方式,不可require引入
                    image: new URL('../assets/images/压力表.png', import.meta.url).href,  // Icon的图像
                    // imageOffset: new AMap.Pixel(0, -60),  // 图像相对展示区域的偏移量,适于雪碧图等
                    imageSize: new AMap.Size(50, 60), // 根据所设置的大小拉伸或压缩图片
                    imageOffset: new AMap.Pixel(0, 0)
                });
                // 创建一个 Marker 实例:
                const marker = new AMap.Marker({
                    position: new AMap.LngLat(element[0], element[1]),   // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
                    // title: 'hhhhhh',
                    icon: icon
                });
                marker.content = proxy.$refs.dialog
    
                // 将创建的点标记添加到已有的地图实例:
                map.add(marker);
    
            });
    
    
        }).catch(e => {
            console.log(e);
        })
    }
    
    initMap()
    
    
    script>
     
    <style lang="scss" scoped>
    .app-container {
        position: absolute;
        top: 0;
        left: 0;
        z-index: -1;
    }
    
    #container {
        padding: 0px;
        margin: 0px;
        width: 1920px;
        height: 1080px;
    }
    
    style>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
  • 相关阅读:
    有效的括号(Java版)
    Linux- 计划任务crontab命令的使用
    Jenkins对应java版本
    Html飞机大战(九): 使徒来袭 (设计敌机)
    初识node.js与内置模块
    Swagger未授权访问漏洞
    RHCSA的学习
    【蓝桥杯物联网赛项学习日志】Day2 中断矩阵按键
    IOS面试题object-c 146-150
    Nacos下载与安装
  • 原文地址:https://blog.csdn.net/Xiang_Gong_Ya_/article/details/134273020