2012-07-11 48 views
0

我正在嘗試使用嵌入了Google Maps API的C#編寫桌面應用程序。爲此,我在應用程序中嵌入了一個Web瀏覽器,並使用Maps API。我可以在應用程序內部使用Maps API的基本功能。使用Google Maps API和GeoXML3導入並顯示本地KML文件

我的目的是即時創建KML文件並將其顯示在地圖上。使用GDAL從形狀文件成功創建KML文件。我通過將它們導入maps.google.com來檢查它們的有效性。我面臨的問題是無法使用Maps API在本地磁盤上顯示KML文件。我無法將這些KML文件上傳到Google可以訪問的公共服務器。我在網上搜索,發現geoxml3可以用於這些目的,但我無法處理它。由於Geoxml3受到相同的跨域下載限制,當我嘗試解析本地磁盤上的KML文件時,出現「訪問被拒絕」錯誤。我如何確保我的KML文檔是從包含地圖頁面的相同域中提供的?我很新的JavaScript,所以任何幫助將不勝感激。

如果還有其他方法可以實現我想要做的事情(比如將本地kml文件導入Google服務器等),請告訴我。先謝謝你。

鄭伊健Gedik

回答

0

通常的答案跨域問題(之前最新的瀏覽器與CORS至少:Cross-Origin Resource Sharing,這是我所看到的,但沒有實驗過),是在同一個域中使用代理網頁。我不確定這將如何與本地文件一起工作。

您應該能夠從本地機器上運行的應用程序訪問本地文件,但我不確定這是否符合除開發以外的使用條款。

另一種選擇是將kml作爲字符串傳遞給geoxml3並使用parseKmlString方法。這將避免xmlHttpRequest。

+0

此應用程序的目的之一是將矢量數據轉換爲KML格式並在嵌入式Google地圖上顯示。所以,創建的任何KML文件都會出現在運行應用程序的本地機器上。但是我無法讓GeoXML3與本地文件一起工作,但我仍然遇到Access Denied錯誤。感謝您的評論 – 2012-07-11 14:09:23

+0

你如何引用本地文件?你正在使用文件或本地主機?我通常使用本地文件在本地機器上測試geoxml3,只是使用相對URL(不記得它是否適用於所有瀏覽器)。 – geocodezip 2012-07-11 14:27:31

+0

我都試過了一個相對的URL和文件。我將我的kml文件放到html(帶有geoxml3 js代碼)文件所在的位置,並且都嘗試了'myparser.Parse('0.kml')'和'myparser.Parse('file:/// C:/ pathtokml /0.kml')'。這兩種嘗試都會導致訪問被拒絕錯誤。 – 2012-07-11 14:55:57

相關問題