地图信息 leaflet +vue3 一个文档让你掌握leaflet基础用法

参考仓库:

leaflet学习: leaflet基础学习 (gitee.com)

 leaflet基本用法

1.引入leafletjs资源:

  1. 手动  下载地址:https://leafletjs.com/download.html  引入css和js
  2. npm npm install leaflet --save 在组件或者main.js中引入

2.创建容器存放地图

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

3.初始化地图

坐标,纬度在前,经度在后,初始化地图必有两个参数,一个坐标,一个初始缩放倍数

<script setup>
import L from 'leaflet'
import 'leaflet/dist/leaflet.css'
import { onMounted} from 'vue'
const initMap = () => {
  let map = L.map('map', {
    center: [29.44916482692468, 106.47399902343751],//中心坐标
    zoom: null,//初始缩放,因为在下文写了展示全地图,所以这里不设置,也可以设置
    minZoom: 3,
    maxZoom: 18,
    zoomControl: true, //缩放组件
    // attributionControl: false, //去掉右下角logol
  })
// let map=L.map("map").setview([29.44916482692468, 106.47399902343751],9);
}
onMounted(() => {
  initMap()
})
</script>

4.给容器设置宽高,显示地图

<style>
#map {
  height: 800px;
  width: 1000px;
  margin: auto;
  border: 10px solid pink;
}
</style>

leaflet布局,图层

L.tileLayer加载底图,第一个参数为底图资源,第二个参数中attribution为版权

   L.tileLayer(
        "https://webrd04.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}",
        {
          attribution:
            '&copy; <p>OpenStreetMap</p> contributors',
        }
      ).addTo(map);

leaflet标记

使用L.marker()第一个参数为经纬度,第二个参数为自定义标记图标。

addTo()添加到图层;bindPopup()显示弹框内容,openPopup()自动打开弹框。

弹框也可使用bindTooltip()

let markerIcon = L.icon({
    iconUrl: "https://unpkg.com/leaflet@1.9.3/dist/images/marker-icon.png",
     iconSize: [20, 30],
    }); 
 let marker = L.marker([29.44916482692468, 106.47399902343751], { icon: markerIcon })
        .addTo(map)
        .bindPopup("标记")
        .openPopup();
//--------------------------------
//marker.bindTooltip('我是标记', { //添加提示文字
//  permanent: true, //是永久打开还是悬停打开
//direction: 'top' //方向
//}).openTooltip(); //在图层打开

leaflet线段,形状

线段:使用 L.polyline()第一个参数为线段两端的位置坐标,第二个参数为线段的样式。

同样也可使用弹框来做数据展示。

let line = L.polyline([[29.44, 106.473], [27.595, 106.9]],
         {
           opacity: 1,
           color: 'red'
         }).addTo(map)

 圆形:使用 L.circle(),对于圆形只需要一个坐标和圆的半径;第一个参数为圆点,第二个参数为圆的样式。同样也可使用弹框

### Vue 3 中使用 Leaflet 的教程 #### 安装依赖包 为了在 Vue 3 项目中集成 Leaflet 地图库,需安装 `leaflet` 和适用于 Vue 3 的插件 `@vue-leaflet/vue-leaflet`。 ```bash npm install leaflet @vue-leaflet/vue-leaflet ``` 此命令会将所需的地图组件及其样式文件加入到项目里[^2]。 #### 创建地图容器并初始化 在模板部分定义一个用于承载地图的 `<client-only>` 或者简单的 div 元素作为占位符,在脚本内通过 `L.map()` 方法来实例化一个新的地图对象,并设置其视口位置与缩放级别。 ```html <template> <div ref="mapContainer" style="height: 400px;"></div> </template> <script setup> import "leaflet/dist/leaflet.css"; import L from "leaflet"; onMounted(() => { const map = L.map(this.$refs.mapContainer).setView([51.505, -0.09], 13); L.tileLayer(&#39;https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png&#39;, { attribution: &#39;© OpenStreetMap contributors&#39; }).addTo(map); }); </script> ``` 这段代码展示了如何在一个 Vue 组件内部加载基础底图瓦片服务以及配置初始中心坐标和缩放比例。 #### 添加交互功能 对于更复杂的需求比如支持用户绘制图形、编辑现有要素或是响应鼠标点击事件等操作,则可以借助于额外的 JavaScript 插件如 `Leaflet.draw` 来增强应用的功能集。同时也可以利用官方提供的 API 文档探索更多可能性[^3]。 #### 图层管理 当涉及到不同类型的地理数据叠加显示时(例如矢量特征、影像覆盖物),可以通过构建自定义图层组或将各独立图层添加至默认的根图层上来实现分层效果。下面的例子说明了怎样向已有地图添加一张图片覆盖物: ```javascript const imageUrl = "/path/to/image.png"; // 替换成实际路径 const bounds = [[lat1, lon1], [lat2, lon2]]; // 设置图像边界范围 this.imageOverlay = L.imageOverlay(imageUrl, bounds).addTo(map); ``` 上述片段中的变量 `bounds` 需要被赋予具体的经纬度值以限定所加载资源的位置;而 `imageOverlay` 则代表新创建出来的图像型图层实例。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值