编辑:这里有一个jsfiddle模型:https://jsfiddle.net/6t8gnegf/
我有一张地图外的位置表,我希望在鼠标悬停在相应的表元素上时,每个区域都能突出显示。因此,我首先制作了一个以名称属性为键的geojson图层列表:
var layarr = {}
for (i=0;i<listOfNames.length;i++) {
for (var prop in geojson['_layers']) {
if (!geojson['_layers'].hasOwnProperty(prop)) {
continue;
}
if (geojson['_layers'][prop]["feature"]["properties"]["name"]==listOfNames[i]) {
layarr[listOfNames[i]] = geojson['_layers'][prop]
}
}
}
然后我调用这个函数:
function highlight(name) {
var laytouse = layarr[name]
laytouse.setStyle(highlightStyle)
}
什么都没有发生,甚至没有错误提示。
我已经拥有了一个高亮功能,在地图上实际区域被鼠标悬停时可以正常工作:
function highlightFeature(e) {
var layer = e.target;
layer.setStyle(highlightStyle);
}
Which is called in the following way:
function onEachFeature(feature, layer) {
layer.on({
mouseover: highlightFeature,
mouseout: resetHighlight,
});
}
geojson=L.geoJson(neighbData, {style: style,
onEachFeature: onEachFeature
}).addTo(mymap);
即使我在控制台上直接执行以下操作:
layarr[name].setStyle({fillOpacity: 1});
我仍然无法得到任何结果。似乎我以某种方式获得了错误的图层,但该图层具有预期的setStyle()方法,并且我没有收到任何控制台错误。
编辑:jsfiddle演示:https://jsfiddle.net/6t8gnegf/