21

我在谷歌地图上使用几何时遇到了一些麻烦。我收到以下错误:“无法获取未定义或空引用的属性‘球形’。”

这是来自 w3c 的一些代码以及我的一些补充。

var x=new google.maps.LatLng(52.395715,4.888916);
var stavanger=new google.maps.LatLng(58.983991,5.734863);
var amsterdam=new google.maps.LatLng(52.395715,4.888916);
var london=new google.maps.LatLng(51.508742,-0.120850);
function initialize()
{
var mapProp = {
  center:x,
  zoom:4,
  mapTypeId:google.maps.MapTypeId.ROADMAP
};

var map=new google.maps.Map(document.getElementById("googleMap"),mapProp);
var myTrip=[stavanger,amsterdam,london];
var flightPath=new google.maps.Polyline({
    path:myTrip,
    strokeColor:"#0000FF",
    strokeOpacity:0.8,
    strokeWeight:2
    });
flightPath.setMap(map);

try{
    var markerpos = google.maps.geometry.spherical.interpolate(flightPath.getAt(0), flightPath.getAt(1), .5);
    // also tried //
    //var Spherical = google.maps.geometry.spherical;
    //var markerpos = Spherical.interpolate(flightPath.getAt(0), flightPath.getAt(1), .5);
    //var markerpos = google.maps.geometry.spherical.interpolate(amsterdam, london, .5);
}
catch(ex){alert(ex);}

var marker = new google.maps.Marker({position: markerpos,
    map: map,  clickable: false
});
}

上面的代码有什么问题?

4

3 回答 3

89

您是否使用参数加载了正确的库libraries=

<script src="https://maps.googleapis.com/maps/api/js?v=3&sensor=false&libraries=geometry"></script>
于 2013-03-05T14:24:10.033 回答
1

如果您正在使用@googlemaps/js-api-loader,请像这样包含它

const loader = new Loader({
  apiKey: "xxxxxxxxxx",
  version: "weekly",
  libraries: ["geometry"], // additional libraries
});
于 2021-03-26T12:43:47.787 回答
0

首先,您需要导入库模块,然后是 auth 密钥模块。我认为这里的问题是在执行库函数时导入库模块没有完成。如果您首先导入身份验证密钥模块,则会在库模块加载未完成时立即调用 initialize() 方法。所以你需要先导入库模块,然后再导入认证模块。

于 2014-03-25T13:39:20.363 回答