【发布时间】:2026-02-02 16:40:01
【问题描述】:
我正在使用 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;
});
这在大多数情况下都可以正常工作,即使在使用优化器缩小代码之后也是如此。但是,有时我会在以 gmaps 为依赖项并尝试计算距离的模块中显示 gmaps.geometry is undefined 错误:
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);
}
}
});
只有当我尝试在页面之后立即执行 calcDistance 并且所需数据已加载且仅有时才会发生这种情况。我想这是 gmaps 异步加载的一些问题,但我并不完全理解。如何定义 gmaps 但未定义 gmaps.geometry?有没有办法解决这个问题?
【问题讨论】:
标签: javascript google-maps-api-3 asynchronous requirejs