2017-03-13 87 views
0

我有一個很久沒有使用的應用程序,客戶端想激活它。關鍵是這個應用程序使用了winforms-geplugin-control-library,並且該組件停止工作超過一年,因爲它引用了已棄用的Google Earth API。Google Maps API出現錯誤

是否有任何組件類似,允許原始功能或至少某個特定級別的.NET(C#)可操作性?

GEPluginCtrls Earth not found

+0

我認爲答案是「否」。我們僅在安裝了GEPro的PC上通過KML使用GE。 AFAIK沒有取代舊的API功能。希望我錯了。你需要什麼API函數? – rheitzman

+0

我仍然處於偵測模式,以確定程序的功能,但API的問題消耗了我很多時間。我設法改變了地球對地圖API的使用,甚至做了一些例子,但現在我有一個onis.js的問題,顯然是一個IE相關的主題或WebBrowser使用。 – xavendano

+0

您已經意識到您在混合使用Google地球和Google地圖 - 對嗎? Google地球已安裝桌面軟件。 Google地圖是一個基於雲的系統。 – rheitzman

回答

1

請看看這裏:

http://www.c-sharpcorner.com/uploadfile/raj1979/using-google-earth-in-a-windows-forms-application/

入門:

讓我們開始吧。

使用Windows窗體在Visual Studio 2005或2008或更高版本中創建一個新的Windows應用程序。

現在將工具箱中的Web瀏覽器控件拖放到窗體上。

當您在機器上安裝Google地球時,您將運行GoogleEarth.exe。在安裝了Google地球的計算機上找到此exe文件,並將GoogleEarth.exe添加到Windows窗體應用程序的bin文件夾中。

現在添加一個新的HTML頁面到您的Windows窗體應用程序,並通過填充代碼到您的HTML頁面。

此腳本密鑰由Google提供。

<script src="http://www.google.com/jsapi?key=ABQIAAAAOh61kmAMajizdQht- Zz3MhReSrBDmGipqiQxKIYFIGIHpqaJ1BRq6XLUD-i7BPkx7XreIBQJ1MetxQ"> </script> 


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<html> 
<head> 
    <title>Sample</title> 
    <script src="http://www.google.com/jsapi?key=ABQIAAAAOh61kmAMajizdQht- Zz3MhReSrBDmGipqiQxKIYFIGIHpqaJ1BRq6XLUD-i7BPkx7XreIBQJ1MetxQ"> </script> 
    <script type="text/javascript"> 
     var ge; 
     google.load("earth", "1"); 

     function init() { 
     google.earth.createInstance('map3d', initCB, failureCB); 
    } 

     function initCB(instance) { 
     ge = instance; 
     ge.getWindow().setVisibility(true); 

ge.getNavigationControl().setVisibility(ge.VISIBILITY_AUTO); 

     ge.getLayerRoot().enableLayerById(ge.LAYER_BORDERS, true); 
    ge.getLayerRoot().enableLayerById(ge.LAYER_ROADS, true); 
     } 

     function failureCB(errorCode) { 
     } 

     google.setOnLoadCallback(init); 
    </script> 

</head> 
<body> 
    <div id="map3d" style="height: 400px; width: 600px;"> 
</div> 

</body> 
</html> 

現在設置Web瀏覽器控件的URL到.htm頁的位置,你剛剛添加到您的應用程序在後面的代碼。您可以在Form's Load事件處理程序中編寫此代碼。

this.webBrowser1.Url = new System.Uri(System.Environment.CurrentDirectory + "\\" + "Files\\MyGoogleEarthFile.htm", System.UriKind.Absolute); 

現在構建並運行應用程序。

或在這裏看到其他實施:

https://www.codeproject.com/Tips/889136/Csharp-Google-Maps-in-WinForm-with-WebBrowser-and

谷歌提供,包括在HTML頁面與maps.google.com同樣功能的映射一個JavaScript API。

在版本v2中,您需要註冊才能獲取使用該庫的API密鑰,而v3版本是可選的,但建議您使用該API,因爲API有限制,如果需要更多信息,則每天只能生成25,000張地圖你需要付出,所以你需要註冊,如果你註冊,你可以:

獲取每天產生的額外的地圖(超過25,000每天) 收費地圖的統計 限制使用您的密鑰,以防止使用在未經授權的網站上

+0

感謝您的幫助,但我有相同的迴應:「var error = new Error(」Module:'earth'not found!「); error.toString = function(){return this.message;} throw error ; 「多數民衆贊成是不贊成使用的API。 – xavendano

+0

刪除舊的winforms-geplugin-control-library並在回答中使用上述示例之一 –

+0

我使用Maps API 3.21製作了一個全新的項目,一切都很好,直到onions.js出現錯誤。顯然,這是默認使用Visual Studio的嵌入式API和WebBrowser的兼容性問題。 – xavendano

1

最後經過多次測試並遵循該組的優秀建議後,另一篇帖子的建議Google Maps Script error in Onion.js顯然解決了這種情況,當然應該是與IE和JavaScript中的Google Maps API的嵌入式WebView類型對象的兼容性問題。

將meta放到HTML支持的兼容性: