2012-08-02 168 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