Google Maps API v3 Google Earth API集成 - 加载地球视图

时间:2012-08-02 14:49:30

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

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

(我的实施的非常粗略的工作原型是here

我遇到的问题是我想默认(在页面加载时)到Google地球视图,而不是(如上面原型中)某个Maps 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)

1 个答案:

答案 0 :(得分:1)

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

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

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

这完全是hackish,所以请在问题跟踪器上提交功能请求,以添加支持的方法,以编程方式切换到地球类型。