Leaflet自定义图片作为地图

vue中使用leaflet展示室内地图,并解决图片初始化问题;

1.初始化地图

initMap () {
      L.CRS.Simple.transformation = new L.transformation(1, 0, 1, 0) // 坐标原点切换为左上角
      this.map = L.map('map', {
        center: [0, 0],
        crs: L.CRS.Simple,
        zoomSnap: 0.1, // 比例可小数
        zoom: 0.5,
        maxZoom: 5,
        minZoom: -5,
        attributionControl: false
      })
      this.mapGroup = new L.LayerGroup()
    },

2.导入地图

 drawMap () {
      this.img.src = this.imgUrl
      // 图片导入后操作
      this.img.onload = () => {
        // 设定图片像素范围为坐标范围
        this.w = this.img.width
        this.h = this.img.height
        this.bounds = [[0,0],[this.h,this.w]]
        this.basicMap = L.imageOverlay(this.imgUrl, this.bounds)
        this.mapGroup.addLayer(this.basicMap)
        this.map.addLayer(this.mapGroup)
      }
    }

3.完整代码

<template>
  <div id="map"></div>
</template>

<script>
export default {
  data () {
    return {
      map: null,
      mapGroup: null,
      basicMap: null,
      bounds: [],
      img: new Image(),
      imgUrl: require('@/assets/map1.png'),
      w: null,
      h: null
    }
  },

  methods: {
    // 初始化地图
    initMap () {
      L.CRS.Simple.transformation = new L.transformation(1, 0, 1, 0) // 坐标原点切换为左上角
      this.map = L.map('map', {
        center: [0, 0],
        crs: L.CRS.Simple,
        zoomSnap: 0.1, // 比例可小数
        zoom: 0.5,
        maxZoom: 5,
        minZoom: -5,
        attributionControl: false
      })
      this.mapGroup = new L.LayerGroup()
    },

    // 导入地图
     drawMap () {
      this.img.src = this.imgUrl
      // 图片导入后操作
      this.img.onload = () => {
        // 设定图片像素范围为坐标范围
        this.w = this.img.width
        this.h = this.img.height
        this.bounds = [[0,0],[this.h,this.w]]
        this.basicMap = L.imageOverlay(this.imgUrl, this.bounds)
        this.mapGroup.addLayer(this.basicMap)
        this.map.addLayer(this.mapGroup)
      }
    }
  },

  mounted() {
    this.$nextTick(() => {
      this.initMap()
      this.drawMap()
    })
  }
}
</script>

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值