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']
毎回更新するのではなく、参照を変数にキャッシュできないのはなぜですか?