vue结合leaflet实现地图放大镜

 更新时间:2023年06月26日 15:16:57   作者:努力搬砖的giser  
放大镜在很多地方都可以使用的到,本文主要介绍了vue结合leaflet实现地图放大镜,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

本文介绍了Web端使用 Leaflet开发库显示地图放大镜的方法 (底图来源:中科星图),结合 leaflet.magnifyingglass插件可以为Leaflet图层添加“放大镜”效果,能够以不同的缩放比例显示地图的一部分 ,显示效果如下图所示。

开发环境

Vue开发库:3.2.37 & Leaflet开发库:1.9.3

Leaflet插件:leaflet.magnifyingglass

使用教程

安装依赖库

通过github仓库下载,引入项目中

leaflet.magnifyingglass仓库 https://github.com/bbecquet/Leaflet.MagnifyingGlass

克隆leaflet.magnifyingglass仓库,下载完毕后,进入Leaflet.MagnifyingGlass文件夹,将该目录下的leaflet.magnifyingglass.jsleaflet.magnifyingglass.css引入本地项目中。

# 克隆leaflet.magnifyingglass仓库
git clone https://github.com/bbecquet/Leaflet.MagnifyingGlass.git

使用简介

// 创建地图放大镜底图(请勿使用主地图已在使用的图层对象)
const baseLayer1 = L.tileLayer('https://tiles1.geovisearth.com/base/v1/vec/{z}/{x}/{y}?token=yours_token'); 
const vecLayer = L.layerGroup([baseLayer1])
// 创建地图放大镜图层,并添加到地图中
let magnifyingGlass = L.magnifyingGlass({
    // 主地图缩放和放大镜之间的缩放级别偏移
    zoomOffset: 3,
    layers: [vecLayer]
}).addTo(map);

以下是核心的参数配置项(更新时间:2023年5月13日)

参数类型默认描述
radiusInteger100放大镜的半径(以像素为单位)
zoomOffsetInteger3主地图缩放和放大镜之间的缩放级别偏移
fixedZoomInteger-1放大镜图层显示固定某一层级,不随地图比例尺变化而变化
fixedPositionBooleanfalse如果为true放大镜将停留在地图上的相同位置,而不是跟随鼠标光标移动
latLngLatLng[0, 0]放大镜的初始位置,既在主地图上,又作为放大视图的中心。
layersILayer[]要在放大视图中显示的图层集(请勿使用主地图已在使用的图层对象)

详细源码(Vue3)

<template>
  <div class="app-contain">
    <!-- leaflet 地图容器 -->
    <div id="myMap"></div>
  </div>
</template>
<script setup>
// 引入样式
import L from 'leaflet';
import 'leaflet/dist/leaflet.css'
// 引入地图放大镜
import './store/leaflet.magnifyingglass.css'
import './store/leaflet.magnifyingglass.js'
import {onMounted} from 'vue'
const initMap = () => {
  // 影像地图
  const sourceMap = L.tileLayer('https://tiles1.geovisearth.com/base/v1/img/{z}/{x}/{y}?token=yours_token');
  const layers = L.layerGroup([sourceMap])
  let map = L.map('myMap', {  //需绑定地图容器div的id
    attributionControl: false,
    zoomControl: true, // 显示缩放控件
    // 最小显示等级
    minZoom: 1,
    // 最大显示等级
    maxZoom: 18,
    // crs: L.CRS.EPSG3857,//设置坐标系类型  EPSG3857伪墨卡托投影
    scrollWheelZoom: true, //默认开启鼠标滚轮缩放
    // 限制显示地理范围
    maxBounds: L.latLngBounds(L.latLng(-90, -180), L.latLng(90, 180)),
    // 限制显示地理范围
    layers: [layers] // 图层
  }).setView([28.907459, 120.003576], 6)
  // 比例尺
  L.control.scale({maxWidth: 240, metric: true, imperial: false, position: 'bottomleft'}).addTo(map);
  /** 地图放大镜 */
  const baseLayer1 = L.tileLayer('https://tiles1.geovisearth.com/base/v1/vec/{z}/{x}/{y}?token=yours_token');
  const vecLayer = L.layerGroup([baseLayer1])
  // 创建地图放大镜图层,并添加到地图中
  let magnifyingGlass = L.magnifyingGlass({
    // 主地图缩放和放大镜之间的缩放级别偏移
    zoomOffset: 3,
    layers: [vecLayer]
  }).addTo(map);
}
onMounted(() => {
  initMap()
})
</script>
<style scoped>
#myMap {
  width: 96vw;
  height: 96vh;
}
</style>

 到此这篇关于vue结合leaflet实现地图放大镜的文章就介绍到这了,更多相关vue leaflet地图放大镜内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue component组件使用方法详解

    vue component组件使用方法详解

    这篇文章主要为大家详细介绍了vue component组件的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • vue3 中使用 reactive 的问题小结

    vue3 中使用 reactive 的问题小结

    在 Vue 3 中,如果你使用 reactive 来定义一个响应式对象,那么这个对象的属性是不能被重新赋值的,因为 reactive 会将对象的属性转换为 getter/setter,这样 Vue 才能追踪到属性的变化,这篇文章主要介绍了vue3 中使用 reactive 的问题,需要的朋友可以参考下
    2024-03-03
  • vue3 element plus按需引入最优雅的用法实例

    vue3 element plus按需引入最优雅的用法实例

    这篇文章主要给大家介绍了关于vue3 element plus按需引入最优雅的用法,以及关于Element-plus按需引入的一些坑,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • vue3中ref绑定dom或者组件失败的原因及分析

    vue3中ref绑定dom或者组件失败的原因及分析

    这篇文章主要介绍了vue3中ref绑定dom或者组件失败的原因及分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • vue3实现鼠标右键显示菜单,点击其他地方消失问题

    vue3实现鼠标右键显示菜单,点击其他地方消失问题

    这篇文章主要介绍了vue3实现鼠标右键显示菜单,点击其他地方消失问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • vue2实现封装动态表单组件

    vue2实现封装动态表单组件

    这篇文章主要介绍了vue2实现封装动态表单组件,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • vue(element ui)使用websocket及心跳检测方式

    vue(element ui)使用websocket及心跳检测方式

    这篇文章主要介绍了vue(element ui)使用websocket及心跳检测方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • vite2打包的时候vendor-xxx.js文件过大的解决方法

    vite2打包的时候vendor-xxx.js文件过大的解决方法

    vite2是一个非常好用的工具,只是随着代码的增多,打包的时候 vendor-xxxxxx.js 文件也越来越大,本文主要介绍了vite2打包的时候vendor-xxx.js文件过大的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • vue+three.js实现炫酷的3D登陆页面示例详解

    vue+three.js实现炫酷的3D登陆页面示例详解

    这篇文章主要为大家介绍了vue+three.js实现炫酷的3D登陆页面示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • Vue组件渲染与更新实现过程浅析

    Vue组件渲染与更新实现过程浅析

    这篇文章主要介绍了Vue组件渲染与更新实现过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-03-03

最新评论