leaflet引入图片作为地图

这篇博客介绍了如何使用Leaflet库在HTML页面中创建地图,通过加载图片作为地图背景,并添加marker进行交互。同时,展示了如何实现marker的拖拽、弹框提示和Tooltip功能。此外,还详细解释了如何添加热力图,包括数据配置、热力图样式调整以及解决热力图层级问题的方法。
摘要由CSDN通过智能技术生成

leaflet引入图片作为地图

HTML:

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

JS:
data中声明的值:

heatmapLayer:null,
map:null,
initMap(){
     let imageUrl = 图片路径;//绝对路径
     var map = L.map('map', {
                    zoom: 5,//初始地图缩放级别
                    minZoom:-5,//地图的最小缩放级别
                    maxZoom: 5,//地图的最大缩放级别
                    crs: L.CRS.Simple,//*要使用的坐标参考系,如果不确定不要随便更改
                });
     var bounds = [[0,0], [758,729]];
     L.imageOverlay(imageUrl, bounds).addTo(map);
     map.fitBounds(bounds);
}

leaflet icon 缩放偏移问题
JS:

import icon from 'leaflet/dist/images/marker-icon.png';
import markerShadow from 'leaflet/dist/images/marker-shadow.png'
let DefaultIcon = L.icon({
                    iconUrl: icon,
                    shadowUrl: markerShadow,
                    iconSize: [25, 41],
                    iconAnchor: [12, 41],
                    popupAnchor: [1, -34],
                    tooltipAnchor: [16, -28],
                    shadowSize: [41, 41]
                });
L.Marker.prototype.options.icon = DefaultIcon;

在地图中添加marker

let marker = L.marker([lat,lng],{draggable: true}).addTo(this.map).bindPopup(`${弹框点击提示文字}`);

在地图中添加marker并打开提示框

let marker = L.marker([lat,lng],{draggable: true}).addTo(this.map).bindPopup(`${弹框点击提示文字}`).openPopup();

在marker中添加事件

marker.on('dragend', function (event) {
    //marker拖拽的拖拽事件,拖拽结束时获取当前marker坐标
   console.log(marker.getLatLng());
})

在marker中绑定Tooltip

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

在地图中添加热力图

if(this.heatmapLayer){//如果有先关闭之前的
   this.map.removeLayer(this.heatmapLayer);
}

// 数据
var testData = {
	max: 8,
	data: [
		{ lat: 24.6408, lng: 46.7728, count: 133 },
		{ lat: 50.75, lng: 3.55, count: 135 },
		{ lat: 551.55, lng: 35.55, count: 964 },
		{ lat: 352.65, lng: 5.45, count: 835 },
		{ lat: 453.45, lng: 45.35, count: 753 },
		{ lat: 154.35, lng: 6.25, count: 671 },
		{ lat: 5.25, lng: 15.15, count: 465 }
	]
};
// 配置
var cfg = {
	radius: 2,//设置每一个热力点的半径
	maxOpacity: 0.9,        //设置最大的不透明度
	minOpacity: 0.3,     //设置最小的不透明度
	scaleRadius: true,      //设置热力点是否平滑过渡
	blur: 0.95,             //系数越高,渐变越平滑,默认是0.85, 滤镜系数将应用于所有热点数据。
	useLocalExtrema: true,  //使用局部极值
	latField: 'lat',   //维度
	lngField: 'lng',  //经度
	valueField: 'count',    //热力点的值
};
let heatmapLayer = new HeatmapOverlay(cfg); 
heatmapLayer.addTo(this.map);
heatmapLayer.setData(testData);
this.heatmapLayer = heatmapLayer

//关闭热力图

this.map.removeLayer(this.heatmapLayer);
this.heatmapLaye=null;

注:上面引入图片作为地图,后引入热力图,地图图片在热力图上层,看不到热力图
解:在css中提高热力图层级

#map .leaflet-zoom-hide{
    z-index: 2;
}
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Leaflet可以通过L.imageOverlay方法加载图片地图。在Vue和Leaflet联合技术栈中,可以使用以下代码示例来加载图片地图: ```javascript initMap() { let imageUrl = '图片路径'; // 图片的绝对路径 var map = L.map('map', { zoom: 5, // 初始地图缩放级别 minZoom: -5, // 地图的最小缩放级别 maxZoom: 5, // 地图的最大缩放级别 crs: L.CRS.Simple, // 要使用的坐标参考系 }); var bounds = \[\[0, 0\], \[758, 729\]\]; // 图片地图的边界范围 L.imageOverlay(imageUrl, bounds).addTo(map); // 添加图片地图图层 map.fitBounds(bounds); // 自适应地图边界范围 } ``` 以上代码中,`imageUrl`是图片地图路径,`bounds`是图片地图的边界范围。通过调用`L.imageOverlay`方法并将其添加到地图中,即可加载图片地图。最后,使用`map.fitBounds`方法使地图自适应边界范围。 #### 引用[.reference_title] - *1* *3* [leaflet直接加载图片缩放,不需要地图底图(示例代码035)](https://blog.csdn.net/cuclife/article/details/127900987)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [leaflet引入图片作为地图](https://blog.csdn.net/Mi_si/article/details/121749597)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值