2020-10-27

使用vue-baidu-map进行区域地图自定义

页面代码

<Row>
        <FormItem label="区域范围" :label-width="96">
          <baidu-map
            class="map"
            style="height: 500px"
            ak="ODy9MlXnW2V28TlPAmCCLledlCaqHYsG"
            auto-resize
            :zoom="zoom"
            @click="getClickInfo"
            scroll-wheel-zoom
            :center="center"
            :map-click="false"
          >
            <bm-polygon
              :path="path"
              v-for="path of polygonPath.paths"
              :key="path.toString()"
              stroke-color="blue"
              fill-color="#ff9900"
              :fill-opacity="0.8"
              :stroke-opacity="0.5"
              :stroke-weight="2"
              :editing="polygonPath.editing"
              @lineupdate="updatePolygonPath"
            />
            <bm-marker
              v-for="(item, index) in polygonPath.paths[0]"
              :position="item"
              :key="index"
              :dragging="false"
            ></bm-marker>
            <bm-local-search
              :keyword="keyword"
              :auto-viewport="true"
              style="display: none"
            ></bm-local-search>
          </baidu-map>
        </FormItem>
      </Row>
    </Form>
    <div style="text-align:center">
      <Button class="btn" @click="addRange" :loading="loading" type="info"
        >确定</Button
      >
      <Button class="btn" style="margin-left: 18px" @click="close">取消</Button>
    </div>

js中代码

import {
  BaiduMap,
  BmLocalSearch,
  BmMarker,
  BmPolygon
} from "vue-baidu-map";
export default {
  data() {
    return {
      keyword: "",
      zoom: 11,
      center: { lng: 118.713023, lat: 32.157628 },
      polygonPath: {
        editing: true,
        paths: [] // 绘制完成后的经纬度,其实是在画的时候动态push的,因为在点击的时候触发了 paintPolygon 函数
      },
      map: null,
      zonerang: null,
      loading: false
    };
  },
  methods: {
    addRange() {
      // console.log(this.polygonPath.paths);
    },
    close() {},
    // 开启多边形绘制
    toggle(name) {
      this[name].editing = !this[name].editing;
      // 在这里做一步判断,如果有路径且开启绘制就把原来的路径清空
      if (this.polygonPath.paths) {
        this.polygonPath.paths = [];
      }
    },
    // 鼠标左键键多边形绘制
    getClickInfo(e) {
      if (!this.polygonPath.editing) {
        return;
      }
      const { paths } = this.polygonPath;
      !paths.length && paths.push([]);
      paths[0].push(e.point);
    },
    // 修改拖拽坐标
    updatePolygonPath(e) {
      // this.polygonPath.paths[0] = e.target.getPath();
    }
  },
  components: {
    BaiduMap,
    BmLocalSearch,
    BmMarker,
    BmPolygon
  }

效果图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值