相关疑难解决方法(0)

如何定义google.maps.geometry?

我正在使用Google Maps Javascript API v3和RequireJS编写JavaScript应用程序.我为gmaps编写了一个小包装器,以便正确地获取依赖关系:

define('gmaps', ['goog!maps,3.9,packages:[geometry],language:de,other_params:sensor=false&channel=...&client=...'],
function(){
    return window.google.maps;
}); 
Run Code Online (Sandbox Code Playgroud)

即使在使用优化器缩小代码之后,这在大多数情况下都能正常工作.但是,有时我会gmaps.geometry is undefined在一个模块中出现错误,该模块具有gmaps依赖关系并尝试计算距离:

define(['gmaps'], function(gmaps) {
    return {
        ...
        calcDistance: function(target) {
            var position = this.getPosition();
            var distance = gmaps.geometry.spherical.computeDistanceBetween(
                new gmaps.LatLng(position.latitude, position.longitude),
                new gmaps.LatLng(target.latitude, target.longitude)
            );
            return (distance / 1000).toFixed(2);
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

只有当我尝试calcDistance在页面之后执行并且所需数据已加载且有时仅执行时,才会发生这种情况.我想这是gmaps异步加载的一些问题,但我不完全理解它.如何定义gmaps但gmaps.geometry未定义?有没有什么办法解决这一问题?

javascript asynchronous google-maps-api-3 requirejs

8
推荐指数
2
解决办法
5718
查看次数