Vue工程搭建Leaflet项目第二弹:Marker && Icon展示

前言

除了标注、图例外,对于地图上的图层要素、几何对象等进行一定的内容显示或者信息提示是有必要的。在WebGIS开发中通常是通过Popup类来实现,而对于Leaflet来说,除了Popup类之外,还有一个ToolTip类,都是结合Marker类等来展示。

1.定义图标

var myIcon = L.icon({
    iconUrl: Icon,
    iconSize: [0, 0],   // 图标尺寸
    iconAnchor: [0, 0], // 图标放置位置
    popupAnchor: [0, 0], // 弹出框偏移量
    shadowUrl: IconShadow,
    shadowSize: [0, 0],
    shadowAnchor: [-2, 0]
});

2.加载Marker

const latlng1 = L.latLng([24.89299, 102.836694]);
const latlng2 = L.latLng([24.85101, 102.795231]);
const latlng3 = L.latLng([24.79112, 102.795231]);
   
const marker1 = L.marker(latlng1, { icon: myIcon }).addTo(map);
const marker2 = L.marker(latlng2, { icon: myIcon }).addTo(map);
const marker3 = L.marker(latlng3, { icon: myIcon }).addTo(map);

3.定义Popup以及ToolTip并添加到地图

let popup1 = L.popup();
let popup2 = L.popup();

// let toolTip = L.tooltip({
//   pane: "tooltipPane"
// });
popup1
    .setLatLng(latlng1)
    .setContent("<p>Hello world1!<br />This is a nice popup.</p>");

popup2
    .setLatLng(latlng2)
    .setContent("<p>Hello world2!<br />This is a nice popup.</p>");

marker1.bindPopup(popup1);
marker2.bindPopup(popup2);

marker3.bindTooltip("my tooltip text").openTooltip();

// popup弹出事件
marker1.on("popupopen", evt => {
    console.log("evtopen:", evt);
});
// popup关闭事件
marker1.on("popupclose", evt => {
    console.log("evtclose:", evt);
});

4.图标偏移在这里插入图片描述

5.图标路径

对于使用的图标应使用import导入图标路径,否则图标无法显示

import Icon from "./marker-icon.png";
import IconShadow from "./marker-shadow.png";

const myIcon = L.icon({
    iconUrl: Icon,
    // iconSize: [40, 40],
    // iconAnchor: [22, 94],
    iconAnchor: [0, 0],
    // popupAnchor: [-3, -76]
    shadowUrl: IconShadow,
    // shadowSize: [40, 40],
    // shadowAnchor: [-2, 0]
    shadowAnchor: [0, 0]
});

6.效果展示

在这里插入图片描述

欢迎大家关注我的公众号,我也会在公众号同步更新。

在这里插入图片描述

若大家对进阶打怪有兴趣的话,欢迎订阅以下专栏

地址:WebGIS入门和进阶实战

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue3上使用LeafletMarker标记,实现悬浮展示内容,离开不显示,可以通过以下步骤实现: 1. 在Vue3项目中安装leafletleaflet.markercluster插件: ```bash npm install leaflet leaflet-markercluster ``` 2. 在Vue3项目中导入leafletleaflet.markercluster插件: ```javascript import L from 'leaflet'; import 'leaflet-markercluster'; ``` 3. 在Vue3组件中定义Marker标记的悬浮展示内容和离开不显示的内容: ```javascript data() { return { popupContent: '', marker: null, }; }, mounted() { // 创建地图 const map = L.map('map').setView([51.505, -0.09], 13); // 创建Marker const markerIcon = L.divIcon({className: 'marker-icon'}); this.marker = L.marker([51.5, -0.09], {icon: markerIcon}).addTo(map); // 创建Popup const popup = L.popup({ closeButton: false, className: 'custom-popup', }).setContent(() => this.popupContent); // 鼠标悬停Marker时,展示Popup this.marker.on('mouseover', () => { this.popupContent = 'Hello World!'; this.marker.bindPopup(popup).openPopup(); }); // 鼠标离开Marker时,隐藏Popup this.marker.on('mouseout', () => { this.marker.closePopup(); this.popupContent = ''; }); } ``` 在上述代码中,我们定义了一个`popupContent`变量,用于存储Marker标记的悬浮展示内容。我们创建了一个Marker,并在`mouseover`事件中展示Popup,并在`mouseout`事件中隐藏Popup。在展示Popup时,我们通过`setContent`方法设置Popup的内容为`popupContent`变量的值。 通过上述步骤,我们就可以在Vue3上使用LeafletMarker标记,实现悬浮展示内容,离开不显示的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值