我在使用传单打开所有弹出窗口时遇到一些困难。 我在循环中有以下代码将标记添加到LayerGroup(ajax自动更新)。 var marker = L.marker([value.position.lat, value.position.lon],options).addTo(markers); allpoints.push([value.position.lat, value.position.lon]); marker.bindPopup(“InfoWindow”,{closeOnClick:false,closeButton:false}).openPopup(); 它工作得很好,除了它只保持最后一个弹出窗口打开。 我想保持所有这些都开放。 我确实在这里找到了一篇关于使用不同标记名称的文章(stackoverflow),但是我在循环中有这个。 我确实尝试将L.marker放入一个数组中,但传单并不喜欢这样。 有任何想法吗?
这个问题是我最近发布的这个问题的背叛 。 我想知道在使用自定义图层控件时是否有更好的方法来检查和切换图层。 (注意:如果按下,我还有一个清除所有图层的按钮。) 我的自定义图层控件(L.Control.extend)如下所示: var overlaysMenuCtrl = L.Control.extend({ onAdd: function(map){ var container = L.DomUtil.create(‘div’, ‘legend’); container.innerHTML = ‘Airfields Docks … and so on … Clear All Layers’; return container; } }); 我的JS看起来像是这样(对于clearAll按钮): $(“#clearAll”).click(function(event) { event.preventDefault(); $(“.check”).each(function(i, el) { if (el.checked) { // Trigger the event. $(el).change(); // Untick the checkbox. el.checked = false; } […]
点击一下,我使用纯javascript为我的元素(SVG PATH)分配一个类: this.getElement().classList.add(‘active’); 新类是它已有的一系列其他类的一部分。 但是,一旦将这个新类添加到单击的元素中,它还应该为.active中的其他元素提供一个类.active ,它与所单击的元素本身具有任何匹配的类。 HTML: 我不知道哪个按钮有匹配的类,因为这些类也是动态的。 我所知道的是div将有任何类匹配任何按钮的类。 问题是,由于特定的原因,我使用纯JavaScript来点击div( 工作 )分配一个新的类名: this.getElement().classList.add(‘active’); 所以以下方法不起作用: this.click(function() { var classes = this.attr(‘class’).split(‘ ‘) classes.forEach(function(elem) { $(‘.’ + elem).addClass(‘active’); }); }); 这就是我如何调用点击: function onEachFeature(feature, layer) { layer.on({ click: panelShow }); } function panelShow(e) { // This works, the class is added to the clicked element this.getElement().classList.add(‘active’); } 但我在这之外有按钮,需要按照问题激活课程。 […]
我想绘制一张地图上绘制的路线很少。 我想要一个带有数字1,..,n的保管箱 选择保管箱中的项目时,相应的路线会在地图上突出显示。 我已经开始使用“传单”了。 如何突出显示一条线? 我使用过“重量”,但它更像是一条线的边界。 我希望看到这条线变得越来越大胆。 这是我的代码: document.onload = loadMap(); function loadMap() { var map = L.map(‘map’).setView([37.8, -96], 4); L.tileLayer(‘https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}’, { attribution: ‘Map data © OpenStreetMap contributors,CC-BY-SA, Imagery © Mapbox’, maxZoom: 18, id: ‘mapbox.streets’, accessToken: ‘pk.eyJ1IjoiZW======V6ZTdlb2V5cyJ9.3HqHQ4BMRvSPaYe8ToA7YQ’ }).addTo(map); var marker = L.marker([51.5, -0.09]).addTo(map); var myLines = [{ “type”: “LineString”, “properties”: { “id”: “1” } “coordinates”: […]
我在iPhone和iPad上使用Safari的传单地图有一些奇怪的问题。 我正在使用AJAX GET请求来获取地图上的标记并在获取时绑定弹出内容。 在弹出窗口中,我有一个按钮,当用户单击它以查看详细信息时,它会打开一个引导模式。 它在Windows和Mac上使用IE,Chrome,Safari,Firefox都可以正常工作但我无法使用iPhone和iPad Safari浏览器。 这是我获取数据的代码: $(function(e) { var latlng = L.latLng(-30.81881, 116.16596); var map = L.map(‘lmap’, { center: latlng, zoom: 6 }); var lcontrol = new L.control.layers(); var eb = new L.control.layers(); //clear the map first clearMap(); //resize the map map.invalidateSize(true); //load the map once all layers cleared loadMap(); //reset the map size […]
当单击一个标记时,我需要执行一些代码,找到与被点击的标记对应的id ,从后端API检索数据,然后将新检索的数据添加到将打开的弹出窗口的content中。 能够在标记上收听点击事件的唯一方法是 map.on(‘popupopen’, function(e){ // How to retrieve marker? // eg: Assign an id on creation, retrieve it now during popupopen };) 我怎样才能找出这是哪个标记? 是否可以为每个标记添加id属性,然后在popupopen事件期间检索此id ?
我有一张带有几个标记的传单地图。 我已将这些标记放在“图层组”中,以便能够显示和隐藏标记类别。 这些是我的标记: var aa = L.marker([48.185556, 11.620278]).bindPopup(‘AA’), bb = L.marker([48.152222, 11.592778]).bindPopup(‘BB’), cc = L.marker([48.161209, 11.597989]).bindPopup(‘CC’), dd = L.marker([48.14350, 11.58775]).bindPopup(‘DD’), ee = L.marker([48.14989, 11.59094]).bindPopup(‘EE’), ff = L.marker([48.15958, 11.60608]).bindPopup(‘FF’); var restaurants = L.layerGroup([aa, bb]); var sport = L.layerGroup([cc, dd]); var sights = L.layerGroup([ee, ff]); 当我使用图层控件和overlayMaps时,这非常有效: var overlayMaps = { “Restaurants”: restaurants, “Sport”: sport, “Sights”: sights }; […]
对于我正在进行的一个小项目,我需要能够在leaflet.js驱动的图像映射上放置一个标记并更新该标记的位置(如果它被拖动)。 我使用以下代码来尝试这个,但它失败了。 我收到错误’标记未定义’。 我不知道为什么它不起作用 – 也许你们可以帮助我? ;) function onMapClick(e) { gib_uni(); marker = new L.marker(e.latlng, {id:uni, icon:redIcon, draggable:’true’}; map.addLayer(marker); }; marker.on(‘dragend’, function(event){ var marker = event.target; var position = marker.getLatLng(); alert(position); marker.setLatLng([position],{id:uni,draggable:’true’}).bindPopup(position).update(); });