2014-12-10 3 views
1

Я делаю это, чтобы добавить Google Earth в Google Maps v3:Uncaught google.earth не загружен

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

Я действительно хочу, чтобы добавить Google Earth в Google Maps, как в здесь: http://maps.google.com ли это возможно с v3?

ответ

1

Да - возможно интегрировать Earth Api с API-интерфейсом Maps v3 - вот working example.

Проблема с кодом является линия var ge = new GoogleEarth(map); - вы делаете этот призыв до апи Земли завершил загрузку в google.load("earth", "1");

с помощью асинхронного вызова Это означает, что google.earth равно нулю, когда вы пытаетесь использовать его и так ошибка Uncaught google.earth not loaded.

Чтобы исправить это, вы должны только позвонить new GoogleEarth(map) после завершения загрузки API. Самый простой способ сделать это, вероятно, использовать обратный вызов.

Например, вы можете изменить свой 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)); 
+0

Получил ошибку при использовании обратного вызова ('Uncaught TypeError: undefined не является функцией'). Но я рассматривал источник рабочего примера, который отлично работает. Может быть, есть что-то с помощью 'google.load' внутри собственной вызывающей анонимной функции. Большое спасибо за вашу помощь и рабочий образец! – yulie

+1

Нечетный - я проверил код, и он сработал. В любом случае рад помочь. Если вы отметите ответ как правильный, то люди с большей вероятностью помогут вам и в будущем. – Fraser

+0

Ah - ok получил это - когда я вставил код, у меня были первые два утверждения назад. – Fraser

 Смежные вопросы

  • Нет связанных вопросов^_^