1
如何暫時禁用viewchangeend
事件,使用setView
方法更改視圖並再次重新啓用viewchangeend
事件?暫時禁用「viewchangeend」事件
這裏是什麼,我現在做的輕型版本:
var mapEventsObjects = [];
/* Remove map events */
for (var i = 0; i < mapEventsObjects.length; i++) {
Microsoft.Maps.Events.removeHandler(mapEventsObjects[i]);
}
/* Change the view */
map.setView({
"zoom": zoom,
"center": new Microsoft.Maps.Location(lat, long)
});
/* Add map events back */
var mapViewChangeEnd = Microsoft.Maps.Events.addHandler(map, "viewchangeend", function (e) {
console.log("viewChangeEnd Fired: ", e);
});
mapEventsObjects.push(mapViewChangeEnd);
我想到的是看到沒有viewChangeEnd在控制檯被解僱,但它似乎有不是一次,而是兩次。
任何想法爲什麼它不工作?
我需要在調用'setView'之前臨時禁用事件,然後重新啓用它。由於JS的異步特性,如果我將該變量設置爲true,則調用'setView'並將其重新設置爲false,在調用'setView'時它將爲false。 – Mahdi
不,它不會。在setView調用已經觸發並且地圖移動完成之前它不會被設置爲false。之前我已經多次使用過這種方法。 – rbrundritt
你永遠不會重新啓用該事件。在調用'setView'後,你必須將'skipViewChangeEnd'設置爲'true',所以它將繼續正常工作。但是,如果你這樣做,它會在'setView'完成之前設置爲'true',因此讓事件再次觸發。 – Mahdi