将 ol3-google-maps 0.4 升级到 0.13 导致 this.setMap 不是函数错误

Upgrading ol3-google-maps 0.4 to 0.13 resulting in this.setMap is not a function error

我使用 ol3-google-maps 0.4 已经有一段时间了,但现在不得不将其升级到 0.10(或更高版本)。所以我将 ol3gm.js (0.4) 的内容替换为最新的 (0.13)。使用 0.4,我的应用程序运行良好,但一旦我切换到 0.13,就会得到 "this.setMap is not a function error"。

使用 Openlayers 3.18.1

谁能告诉我两者之间的区别以及如何解决这个问题。

v0.6 开始,ol3-google-maps 与在其中编译的 OpenLayers 一起发布。您不需要从那里单独加载 OpenLayers 库。

此外,请注意,对于每个版本,使用的 OpenLayers 版本可能不同。如果你想使用 OpenLayers 3.18.1,那么你应该使用 ol3-google-maps v0.11.0.

正如 Alexandre 所解释的那样,从 v0.6 开始,ol3-google-maps 与在其中编译的 OpenLayers 一起发布。

因为我使用的是 ol3gm v0.4,其中没有包含 Openlayers,所以我在应用程序初始化时加载了 ol.js 和 Google API,一旦基础层更改事件发生被解雇是在运行时加载 ol3gm.js,因此出现了问题。使该库加载顺序正确,问题得到解决。如果遇到类似问题的人可以使用以下代码等待 olgm 可用。

  var googleInterval = setInterval(function(){
        initmapController()
    }, 1000);
    function initmapController() {
        $("#loadingOverLay").removeClass('hide')
        if (google.maps !== undefined){
            if(typeof olgm !== "undefined") {
                $("#loadingOverLay").addClass('hide')
                clearInterval(googleInterval);
                init();
            }
        }
    }