首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在传单地图中弹出带有Leaflet.markercluster的

在传单地图中弹出带有Leaflet.markercluster的
EN

Stack Overflow用户
提问于 2019-12-29 00:36:31
回答 1查看 124关注 0票数 1

我是一个传单初学者,我测试了这个代码(The geojson point data markers are not clustering in leaflet map),以创建一个集群制造者。然而,当我点击标记时,弹出窗口中的信息总是相同的。您能告诉我在代码中要更改什么才能有一个不同的弹出窗口吗?请帮帮我。代码在这里:

代码语言:javascript
复制
var OpenStreetMap_Mapnik = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
    maxZoom: 19,
    attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);

var street = {...my_geojson_data...}

var s_light_style = {
    radius: 8,
    fillColor: "#ff7800",
    color: "#000",
    weight: 1,
    opacity: 1,
    fillOpacity: 0.8
};


var markers = L.markerClusterGroup();
L.geoJSON(street, {
    onEachFeature : function(feature, layer){
        var popupContent =  '<h4 class = "text-primary">Street Light</h4>' +
                            '<div class="container"><table class="table table-striped">' +
                            '<thead><tr><th>Properties</th><th>Value</th></tr></thead>' +
                            '<tbody><tr><td> Name </td><td>'+ feature.properties.Name +'</td></tr>' +
                            '<tr><td>Elevation </td><td>' + feature.properties.ele +'</td></tr>' +
                            '<tr><td> Power (watt) </td><td>' + feature.properties.Power_Watt + '</td></tr>' +
                            '<tr><td> Pole Height </td><td>' + feature.properties.pole_hgt + '</td></tr>' +
                            '<tr><td> Time </td><td>' + feature.properties.time + '</td></tr>';
        layer.bindPopup(popupContent)
    },
    pointToLayer: function (feature, latlng) {
        return markers.addLayer(L.circleMarker(latlng, s_light_style))
    }
})
map.addLayer(markers);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-29 02:46:23

您的pointToLayers函数返回您的markers MarkerClusterGroup,而您应该只返回个人(圆圈)标记。因此,在稍后的onEachFeature函数中,将弹出绑定到整个组。

一个简单的解决方案是在构建GeoJSON层组时避免填充MCG,但只在最后添加

代码语言:javascript
复制
const geojsonGroup = L.geoJSON({
  pointToLayer: function (feature, latlng) {
    return L.circleMarker(latlng);
  }
});
markers.addLayer(geojsonGroup);
map.addLayer(markers);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59516058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档