使用 Mapbox JS API 并想知道为什么缓存在变量中的标记属性不会更新,但它们的非缓存对应物会更新。
例如,这将按state
预期更新标记的自定义属性(在其他地方的 geoJSON 对象中定义):
map.markerLayer.on('click',function(e) {
var marker = e.layer;
var properties = marker.feature.properties;
var id = properties.id;
var state = properties.state;
if (state === 'active') {
panels.hidePanel(id, function(){
e.layer.feature.properties['state'] = 'inactive';
});
} else {
panels.showPanel(id, function(){
e.layer.feature.properties['state'] = 'active';
});
}
});
但这不会:
map.markerLayer.on('click',function(e) {
var marker = e.layer;
var properties = marker.feature.properties;
var id = properties.id;
var state = properties['panel-state'];
if (state === 'active') {
panels.hidePanel(id, function(){
state = 'inactive';
});
} else {
panels.showPanel(id, function(){
state = 'active';
});
}
});
谁能帮我理解后者发生了什么?为什么我不能缓存变量中的引用而不是e.layer.feature.properties['state']
每次都更新?