Проблема передачи файла kml в Google Планета Земля с помощью класса geoxml3 и класса ProjectedOverlay - PullRequest
0 голосов
/ 15 декабря 2010

Я пытаюсь создать Google Earth, показывающий города, но я остановился на парсере kml geoxml3.У меня есть javascript, строящий карту Google, сначала показывающий места, которые я хочу.это отлично работаетЯ вызываю функцию из сценария php, предоставляя ей адрес и ссылку на файл kml из базы данных.Функция строит карту, устанавливает флаг 'map_finished' в качестве контрольного флага, когда все прошло нормально, и вызывает функцию построения Google Earth.

// Get maps and earth from google
google.load( 'maps', '2.s', {'other_params': 'sensor=true'} );
google.load( 'earth', '1' );

//Google Earth Initializer
function initObjectEarth() {
  // Check if Google Earth plugin is installed   
  if( gm_loaded ) {
  this.ge_plugin_installed = google.earth.isInstalled();

  if( this.ge_plugin_installed ) {
    google.earth.createInstance( 'inmap', geSuccessCallback, geFailureCallback );
    ge_loaded = true;
  } else {
    alert( 'Your Browser has not yet installed the Google Earth plugin. 
            We recommend installing it to use all features!' );
    return false;
  }
 }
}

// Success handler
function geSuccessCallback( object ) {
  this.ge = object;
  this.ge.getWindow().setVisibility( true );
  this.kmlParser = new geoXML3.parser();
}

// Error handler
function geFailureCallback( object ) {
   alert( 'Error: ' + object );
}

Анализатор geoxml использует класс ProjectedOverlay.Обе библиотеки загружаются в заголовок документа.Когда синтаксический анализатор начинает работать, он запрашивает экземпляр ProjectedOverlay.Этот класс генерирует ошибку

Error: **google.maps is undefined**

в firebug для следующего оператора

ProjectedOverlay.prototype = new google.maps.OverlayView();

В моем файле сценария я объявил переменные, включающие

var gm //for google map
var ge //for google earth

gmв функции, которая строит карту Google.

Интересно, как решить эту проблему.Я попробовал функцию getProjection (), которую нашел в сети, а также

ProjectedOverlay.prototype = new google.maps.OverlayView().prototype;

, но безуспешно.Эта тема абсолютно новая для меня, и я не могу понять, как это исправить, ни из документации OverlayView, ни из поиска Google.

Что я забыл или сделал неправильно?

1 Ответ

0 голосов
/ 26 февраля 2011

Неправильный вызов конструктора geoXML3, вы должны передать объект google.maps в качестве параметра (... следовательно, ошибка "google.maps is undefined").

this.kmlParser = new geoXML3.parser({map: gm}); // gm for google map
...