将“map”绑定到OverlayView时的MVCObject不一致 - Google Maps API

时间:2013-01-29 19:00:03

标签: javascript google-maps function-binding

我正在玩Google地图中的自定义叠加层,尤其是OverlayView类。我经历了很多麻烦,并且调试得出结论,在将OverlayView(源自MVCObject)的“map”属性绑定到其他MVC对象时可能存在不一致。

我不确定这是一个错误还是我错过了重要的事情。然而,我设置了一个测试场景,与MVCObject相比,OverlayView会产生奇怪的结果。测试场景如下:

var o = new google.maps.MVCObject()
var x = new google.maps.OverlayView();
x.bindTo("map", o);
o.set("map", myMap);
setTimeout(function () { o.set("map", null); }, 500);
setTimeout(function () { alert("Map is null: " + (x.get("map") == null));  }, 1000);

根据我在bindTo调用后的理解,当两个对象发生更改时,“map”属性值应该在两个对象之间传播。然而,对此进行测试会产生“Map is null:false”,这与假设相矛盾。

由于某种原因它只能在通过setTimeout延迟调用时起作用,但是在OverlayView中它是一个错误的方向让我将测试代码中的OverlayView类型更改为常规MVCObject会产生正确的答案。它似乎只是“map”属性,因为更改属性名称也可以使它工作。

这里有什么想法吗?已在多个浏览器中测试过它,结果是一样的。

0 个答案:

没有答案