我想创建一个Leaflet地图,它能够在不同的地图图层之间切换。这当然没有问题。
但我想添加一个滑块,可以在实际地图播放器和前一个地图播放器之间进行混合,以方便地比较这两个地图的内容:滑块 = 右=> 实际地图的 100% 不透明度滑块 = 左=> 实际地图的 0% 不透明度地图,这意味着前地图滑块的 100% 不透明度 = 中间=> 实际地图的 50% 不透明度,这意味着背景中的前地图也透光了 50%
加载地图后,我设法使混合在初始情况下工作。但从地图选择器菜单中选择另一张地图后,我无法使其工作。应该在后台显示的前地图播放器似乎迷失了。
我认为问题在于,当我在 Maplayers 菜单中选择另一个地图时,事件侦听器map.on不仅会调用函数“fct_layerchange” ,而且当我通过“map.addLayer”将前一个 maplayer 添加到背景时也会调用函数“fct_layerchange” (背景地图);”
我不再知道如何解决这些不需要的函数“多重调用”,因为我在选择新底图时依赖于“baselayerchange”事件。当处于事件函数内部时,此事件会再次触发。某些 Leaflet-guru 是否知道如何解决此问题?:-)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Blend 2 maps</title>
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.0.3/dist/leaflet.css" />
<script src="https://unpkg.com/leaflet@1.0.3/dist/leaflet.js"></script>
<style>
html, body, #map {height: 100%;}
</style>
</head>
<body>
<div id="map"></div>
<script>
// 1.) BASEMAPS …Run Code Online (Sandbox Code Playgroud)一些 Leaflet 大师有什么想法,在Leaflet v1.0.3 中使 CircleMarker可拖动的最简单方法是什么?
通过使用“可拖动”选项,可以轻松地为“标准”标记做到这一点。但是 CircleMarker 不存在这样的选项。我通过使用多个事件进行了尝试,但问题是,不是移动标记而是底层地图。
另一种可能性是使用“stopPropagation” -Function(但仅适用于 DOMEvents)。或者使用“removeEventParent” ……如果 CircleMarker 的“父”是地图及其事件?关于文档,还有DOMUtility/Draggable -class。这是我需要的吗?
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Draggable Markers</title>
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.0.3/dist/leaflet.css" />
<script src="https://unpkg.com/leaflet@1.0.3/dist/leaflet.js"></script>
<style>
body {padding: 0; margin: 0;}
html, body, #map {height: 100%;}
</style>
</head>
<body>
<div id="map"></div>
<script>
var layerOsm = new L.TileLayer('https://{s}.api.mapbox.com/v4/mapbox.outdoors/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoicHBldGUiLCJhIjoiY2lsdmE2ZmQ2MDA4OHZxbTZpcmx1emtqbSJ9.Two7SPSaIZysqgOTrrLkRg', {
subdomains: 'ab', maxZoom: 20, noWrap:true, attribution:'<a href="http://www.mapbox.com">Mapbox</a> | <a href="http://www.openstreetmap.org/copyright/">OpenStreetMap</a>' });
var map = new L.Map('map').addLayer(layerOsm).setView(new …Run Code Online (Sandbox Code Playgroud)