如何在多个标记悬停时显示弹出窗口

时间:2018-08-02 09:06:06

标签: javascript leaflet geojson

我正在显示标记上的弹出窗口,我可以简单地添加以下几行以生成弹出窗口

let marker = L.marker(myloc, { icon: greenIcon }).addTo(map);
marker.bindPopup(map.getCenter() +"<br>" + 
"Min Zoom" + map.getMinZoom() +"<br>" + 
"Max Zoom" + map.getMaxZoom());

我正在努力显示我所在位置附近的标记。我已经使用了leaflet-knn算法。从我的代码中,我将获得5个存储在res中的标记。现在,我必须在悬停或单击事件上显示标记信息。

到目前为止,我已经尝试了以下代码。我出错了。谁能帮我我在做错什么。

var longitude = myloc.lng,
latitude = myloc.lat;
var map = L.map('map').setView(myloc, 12),
gjLayer = L.geoJson(testCities);


res = leafletKnn(gjLayer).nearest(
[longitude, latitude], 5, distance);

if (res.length) {
    for (i = 0; i < res.length; i++) {
        var popup = res[i].layer.feature.properties.name;

        var m = map.addLayer(res[i].layer).bindPopup(popup);

        if ($.inArray(res[i], oldArr) === -1)
            oldArr.push(res[i]);
    }
}
m.on('mouseover', function(e){
    this.openPopup();
})

1 个答案:

答案 0 :(得分:1)

您可以简单地对GeoJSON()函数选项进行修改:

var gjLayer = L.geoJson(testCities, {
    onEachFeature: function(feature, layer) {
        content = "<b>Name:</b> " + feature.properties.name;
        layer.bindPopup(content);
    }
});