1

我正在使用 Google 地图中的自定义叠加层,尤其是 OverlayView 类。经过很多麻烦和调试后,我得出结论,将 OverlayView(从 MVCObject 派生)的“地图”属性绑定到其他 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 会产生正确的答案。似乎它只是“地图”属性,因为更改属性名称也可以使其工作。

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

4

0 回答 0