我这样做是为了将Google地球添加到Google地图v3:
google.load("earth", "1");
// map options
var options = mapster.MAP_OPTIONS,
element = document.getElementById('map-canvas'),
// map
map = mapster.create(element, options);
var ge = new GoogleEarth(map);
我的html文件上的脚本如下所示:
<script src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script src="https://www.google.com/jsapi"></script>
<script src="googleearth.js"></script>
<script src="script.js"></script>
我不断得到Uncaught google.earth not loaded
并且不确定我做错了什么。
我使用此引用:http://google-maps-utility-library-v3.googlecode.com/svn/trunk/googleearth/docs/reference.html
以下是我的完整代码,以防它有用:http://plnkr.co/edit/NlPF3F259IIMgj2pfN09?p=preview
我真的想将谷歌地球添加到谷歌地图中,如下所示:http://maps.google.com 是否可以使用v3?
答案 0 :(得分:1)
是的 - 可以将Earth Api与Maps v3 API集成 - 这是一个working example。
您的代码存在的问题是var ge = new GoogleEarth(map);
行 - 您正在通过异步调用google.load("earth", "1");
这意味着当您尝试使用它时google.earth
为空,因此会抛出Uncaught google.earth not loaded
错误。
要修复它,您应该只在API加载完成后调用new GoogleEarth(map)
。最简单的方法是使用回调。
例如 - 您可以按如下方式修改script.js
。
(function(window, google, mapster) {
google.load("earth", "1");
// map options
var options = mapster.MAP_OPTIONS,
element = document.getElementById('map-canvas'),
map = mapster.create(element, options);
// callback method to fire once the api had loaded
google.maps.event.addDomListener(window, 'load', function() { new GoogleEarth(map) });
var marker2 = map.addMarker({
lat: 37.781350,
lng: -122.485883,
draggable: true,
events: [{
name: 'click',
callback: function(e, marker) {
console.log(e, marker);
}
}, {
name: 'dragend',
callback: function() {
alert('dragged');
}
}]
});
// no point calling this here as google.earth will be null
//var ge = new GoogleEarth(map);
}(window, google, window.Mapster));