我正在使用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)
答案 0 :(得分:1)
此库没有以编程方式切换的公共方法,如果在所有设置到位之前尝试执行此操作,则会失败。理想情况下,在实例化GoogleEarth对象后会有回调,但缺少可以通过在未编译的JS上使用私有showEarth_()方法解决问题。
注意你必须在插件准备好之前等待一段时间,这样的事情通常应该可以解决问题:
googleEarth = new GoogleEarth(map);
setTimeout('googleEarth.showEarth_();',1000);
这完全是hackish,所以请在问题跟踪器上提交功能请求,以添加支持的方法,以编程方式切换到地球类型。