2

我正在使用google-maps-utility-library-v3将 Google Earth API 视图合并到 Google Maps API v3 实现中。据我所知,这些 Google Maps API v3 / Earth API 实用程序是由用户 jlivni 编写的,到目前为止,哪些代码的可用性对我帮助很大。

(我的实现的非常粗略的工作原型在这里

我遇到的问题是我想默认(在页面加载时)谷歌地球视图,而不是(如上面的原型中)地图 API v3 标准视图之一。

我在上面的链接(在 src 下)查看了(未编译的?)googleearth.js 的第 81、131 和 133 行,并在我的 JourneyImmersionInitialiseMapLoadGPXAnimate.js 中设置 Maps API 选项时尝试了以下操作...

var myOptions = {
    zoom: 18,
    center: arr_lat_lon[currentTrk][currentTrkseg][0],
    scaleControl: true,
    tilt: 45,
    mapTypeId: earthMapType,
    overviewMapControl: true,
    overviewMapControlOptions: {
        opened: true
        }
    };

map = new google.maps.Map(document.getElementById("map"), myOptions);

...但是得到...

ReferenceError: earthMapType is not defined

另外我试过...

mapTypeId: GoogleEarth.earthMapType,

...这会导致右上角没有地图类型选项的灰色地图画布。一旦我从页面中选择了地球视图,我就可以在 Firebug 的控制台上使用标准地球 API 地图类型进行更改...

earth.getInstance().getOptions().setMapType(earth.getInstance().MAP_TYPE_EARTH)

... 或者 ...

earth.getInstance().getOptions().setMapType(earth.getInstance().MAP_TYPE_SKY)

...但同样,使用 earthMapType 或 GoogleEarth.earthMapType 代替最后一个元素会导致 Firebug 控制台出现错误,这一次 ...

Error: Error calling method on NPObject!

任何帮助将不胜感激。提前致谢

(因为我是新手,我在这篇文章中不能提供两个以上的链接,但想补充一点,我已经查看了 stackoverflow.com/questions/3039250/google-earth-integrated-with-google-maps-api- v3)

4

1 回答 1

1

该库没有以编程方式切换的公共方法,如果您在所有设置到位之前尝试这样做,它将失败。理想情况下,在实例化您的 GoogleEarth 对象后会有一个回调,但缺少您可以通过在未编译的 JS 上使用私有 showEarth_() 方法来解决该问题。

请注意,在插件准备好之前您必须等待任意时间,这样的事情通常应该可以解决问题:

googleEarth = new GoogleEarth(map);
setTimeout('googleEarth.showEarth_();',1000);

这一切都非常骇人听闻,因此请在问题跟踪器上提交功能请求,以添加支持以编程方式切换到地球类型的方法。

于 2012-08-02T15:47:29.657 回答