未加载google.earth未加载

时间:2014-12-10 00:02:28

标签: google-maps-api-3 google-earth-plugin

我这样做是为了将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?

1 个答案:

答案 0 :(得分:1)

是的 - 可以将Earth Api与Maps v3 API集成 - 这是一个working example

您的代码存在的问题是var ge = new GoogleEarth(map);行 - 您正在通过异步调用google.load("earth", "1");

加载Earth api之前进行此调用

这意味着当您尝试使用它时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));