• vue-amap-marker相关问题,信息窗体及自定义图片的偏移问题


      vue-amap所引用的地图组件为高德地图组件,相关事件及属性也大都可以在高德地图的原生文档中找到实例。

      首先,在查文档的时候发现坐标点属性为marker,相关的各种属性都可以直接在marker这个对象里添加,再绑定事件的时候遇到了一个问题,就是文档上的点击事件(由events触发)都是在el-amap-marker标签里绑定的,然而我接到手里的项目中,events绑定在了el-amap里面,然后我在对照其他项目的时候发现只有自己接受的项目里是绑定在“错误”的位置。但是又不能删掉,因为这里确定了坐标中心等一系列内容。在经过查询文档无果后,通过部门前辈得知绑定在外面的events事件不会与marker里的冲突。

    页面部分:

      <el-amap
            vid="amap"
            :events="events"
            :center="center"
            :zoom="zoom"
            viewMode="3D"
            :amap-manager="amapManager"
            map-style="amap://styles/fresh"
          >
            <el-amap-marker
              v-for="(marker, index) in mapData"
              :key="'marker' + index"
              :position="marker.position"
              :title="marker.text"
              :icon="marker.icon"
              :offset="marker.offset"
          :label="marker.label"// marker的label标签
              :events="marker.events"  //通过事件来显示对应的信息窗体
            >
            </el-amap-marker>
            <el-amap-info-window
              v-if="poiInfoWindow"
              isCustom="true"
              :position="poiInfoWindow.position"
              :visible="poiInfoWindow.visible"
              :offset="poiInfoWindow.offset"
            >
              <div class="slot-info-window scale" @click="closePoiwindow">
                <div class="info-title">
                  {{ poiInfoWindow.title}}
                </div>
                <div class="info-content scale">
                  <p>11111:<span>{{ poiInfoWindow.value }}</span></p>
                  <p>22222:<span>{{poiInfoWindow.ratio}}</span></p>
                </div>
              </div> //自定义的信息窗体的结构和内容样式自行调整
            </el-amap-info-window>
          </el-amap>

    js部分:

    
    
    private poiInfoWindow: any = {
        content: null,
        visible: false,
        offset: [130, 40],
        title: ' 啦啦啦啦啦',
        datas: [{ ratio: 2, value: 10 }],
        position: [1, 1],
      };//此处数据随意填写即可

      private getMapData() { const scenicOptPar
    = {}; scenicOpt(scenicOptPar).then((res: any) => { if ( res.status === 200 && res.data && res.data.obj && res.data.obj.length ) { const data = res.data.obj; const marker: any = []; data.forEach((v: any, n: number) => { v.position = [v.lng, v.lat]; marker.push({ id: n, position: v.position, text: v.name, value: v.value, ratio: v.ratio, content: '', icon: 'img/icon.png',//可选可不选,有默认坐标点图案 offset: [-20, -50],//设置偏移量是因为把坐标点换成自己的图片后会有偏移
            label: {
             offset: [10,10]
                  content: "<div class='info'>我是 marker 的 label 标签</div>", //设置文本标注内容
                  direction: 'right' //设置文本标注方位
                },//label标签为一个对象可在内部设置具体内容及样式
               events: {
                  click: (e: any) => {
                    this.openPoiwindow(e, n);
                  },
                },
              });
            });
            this.mapData = marker;
          }
        });
         private openPoiwindow(e: any, n: any) {
        this.mapData.forEach((v: any, idx: number) => {
          this.mapData[
            idx
          ].content = `<i title="${v.text}" class="duoyou-poi-icon"></i>`;//这里的content并无实际意义
          if (v.id === n) {
            this.mapData[idx].content = `<i class="duoyou-poi-icon"></i>`;//同上
            this.poiInfoWindow.visible = true;
            this.poiInfoWindow.title = v.text;
            this.poiInfoWindow.position = v.position;//控制窗体显示在所点击的坐标上
            this.poiInfoWindow.value = v.value;
            this.poiInfoWindow.ratio = (v.ratio * 100).toFixed(2);
          }
        });
      }
    }

      在完成坐标点替换为自定义图标时发现图标位置与原坐标点不符,所以设置了偏移来校准位置,百度得知这个偏移是通病,因为设置完图标,图标的锚点默认在左上角,今天在看高德地图原生文档的时候发现官方给出了一个anchor 属性来设置锚点方位,特此记录。

  • 相关阅读:
    Mysql转换成SqlServer数据库,以及SqlServer转换成Mysql数据库
    MySQL分页存储过程
    zabbix监控指定端口
    zabbix_server.conf 详解
    zabbix监控常见系统报错
    Zabbix3.2下Template App Zabbix Server+Template OS Linux Item
    Zabbix邮件报警配置
    分布式监控系统Zabbix-3.0.3-完整安装记录
    Nginx高级应用之Location Url
    st
  • 原文地址:https://www.cnblogs.com/wanghuanl/p/15157081.html
Copyright © 2020-2023  润新知