2012-08-02 123 views
2

我使用google-maps-utility-library-v3将Google地球API视图合并到Google Maps API v3实现中。这些Google Maps API v3/Earth API实用程序由用户jlivni编写,据我所知,迄今为止,哪些代码对我的帮助非常大。Google Maps API v3谷歌地球API集成 - 加载时加载地球视图

(我的执行非常粗略的工作原型here

我的问题是,我想预设(在页面加载)的谷歌地球视图,而不是(如上面的原型)一个的Maps API v3标准视图。

我已经看过线81,131和133(未编译?)googleearth.js在上面的链接(src下),并试图在我的JourneyImmersionInitialiseMapLoadGPXAnimate.js内设置地图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, 

...这导致灰色地图画布在右上角没有地图类型选项。一旦我选择从页面我可以在标准地球API地图类型之间在使用Firebug的控制台,然后改变地球视图...

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

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

注意到你必须等待任意时间量之前插件已经准备好,这样的事情通常应该做的伎俩:

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

这是所有漂亮的hackish,所以请提交有关功能请求问题跟踪器添加一个受支持的方法,以编程方式切换到地球类型。

+0

感谢您的迅速响应,非常感谢。功能请求(参考191)添加到问题跟踪器。上面的黑客攻击确实很好。在我选择答案之前,我想知道是否可以阐明实现答案时的一个敲门效应:在添加'setTimeout('googleEarth.showEarth _();',1000);'(你的答案)之前,我的调用(例如)'googleEarth.getInstance()。getView()。setAbstractView(lookAt);'工作正常,但现在它不 - 我应该以不同的方式调用实例,即不是googleEarth.getInstance()?感谢 – 2012-08-03 09:44:11

+0

...对不起:'不起作用',因为它不会将选定的可见Google地球视图平移到我的lookAt变量中定义的位置,在添加'setTimeout('googleEarth.showEarth_() ;',1000);'如果我先从画布右上角手动选择Google地球视图。谢谢 – 2012-08-03 09:47:54

+0

在showEarth_()完成之后(可能在第一次调用它几秒钟后),您对地球实例执行的所有操作(包括设置抽象视图)都需要完成。当我得到你的功能要求时,我还会添加一个你可以听的事件,以便你知道它什么时候准备好了...... – jlivni 2012-08-03 19:01:30