0

我正在尝试构建一个显示城市的谷歌地球视图,但我坚持使用 kml 解析器 geoxml3。我有一个 javascript 构建一个谷歌地图,首先显示我想要的位置。这很好用。我从 php 脚本中调用该函数,为它提供来自数据库的地址和 kml 文件引用。该函数构建地图,在一切正常时设置一个标志“map_finished”作为控制标志,并调用构建谷歌地球视图函数。

// 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**

以下语句的萤火虫错误

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

在我的脚本文件中,我声明了 vars,包括

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

gm 在构建谷歌地图的函数中设置。

我想知道如何解决这个问题。我尝试了我在网络中找到的 getProjection() 以及

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

没有成功。这个话题对我来说绝对是新的,我无法从 OverlayView 的文档或谷歌搜索中弄清楚如何解决它。

我忘记了什么或做错了什么?

4

1 回答 1

0

对 geoXML3 构造函数的调用是错误的,您必须将 google.maps 对象作为参数传递(...因此“google.maps is undefined”错误)。

this.kmlParser = new geoXML3.parser({map: gm}); // gm for google map
于 2011-02-26T03:00:10.023 回答