2012-06-01 92 views
7

我需要能夠從非網絡應用程序訪問谷歌地圖API。我在Google Maps的常見問題中看到這是可能的。但是,我找不到任何有關從基於PC的應用程序訪問API的參考。有人能指引我朝着正確的方向嗎?谷歌地圖非網絡訪問

(我想從一個Delphi應用程序訪問API,是否有幫助。)提前

感謝。

+1

在您花更多時間編寫代碼之前,您應該仔細閱讀許可條款,也許可以考慮使用OpenStreetMap。只是說... – dummzeuch

+0

我的底線是,我需要捕捉一個人從開始到結束的駕駛路線。我需要街道名稱,城市和州/省。據說,Google Maps API有一個地理編碼器,它可以告訴我這些信息,知道GPS座標。 – rickstep

+0

看來,來自OpenStreetMap的nominatim包含我正在尋找的數據。由於我在這方面是一個新手,是否有任何如何從Delphi內部調用nomiatim並解釋xml結果的例子? – rickstep

回答

15

前段時間我寫了一系列有關使用Delphi的Google maps API v3的文章,基本上你需要一個TWebBrowser組件,並加載一個HTML代碼來處理Google Maps JavaScript API v3。從這裏使用IHTMLWindow2.execScriptMSHTML Interfaces等功能,您可以與來自Delphi的JavaScript代碼和Google Maps API響應進行交互。

而且看看這些項目

5

如果你有在這個方向上認真部署:
忘掉谷歌地圖API,並使用OpenLayers代替。

相信我,我有實踐經驗。我創建了無數交互式地圖網站和應用程序,並且我編寫了將Google地圖功能包裝到Delphi組件中的代碼。你可以找到他們在谷歌代碼:http://code.google.com/p/delphimaps/

您還可以找到,我已經有一個早期版本的這些組件的位置做了一些應用實例:Use Googlemap from my Delphi application?

的OpenLayers是更加靈活,它是完全開源的,它背後有一個完整的社區。它甚至可以使用Google地圖,但您可以輕鬆切換到OpenStreetMaps,Yahoo,Bing或您自己的GIS系統。

網上有很多例子,而且你並不拘泥於谷歌強加的愚蠢規則。例如,如果您想通過安全(HTTPS)連接使用Google地圖,則必須付費。我從不直接使用Google Maps API,而且自從我開始使用OpenLayers後,我的GIS網站變得更好了。也許有一天我應該將OpenLayers封裝到Delphi組件中,但是現在我用JavaScript代替大部分東西,並且只在真正需要時才與我的Delphi應用程序通信,所以即使使用包含地圖的Delphi應用程序,也不需要太多的GIS東西在德爾福完成。 原來更容易維護。

..

此外,的OpenLayers不需要任何互聯網連接。它可以在離線瀏覽器中100%運行。Google地圖要求您使用互聯網連接,因爲它會動態下載部分代碼,並且始終希望從Google下載其地圖。

+1

「我現在用JavaScript編寫大部分內容......」 - 你不必再用了,你可以和Pascal呆在一起。看看智能手機工作室:http://op4js.optimalesystemer.no/about/ – avra

+0

我的底線是,我需要捕捉一個人從開始到停止駕駛的路線。我需要街道名稱,城市和州/省。 OpenLayers能做到這一點嗎? – rickstep

+0

我不確定「捕捉路線」的含義,但如果您需要將座標轉換爲地址,則可以使用Google GeoCoder API。 DelphiMaps爲你打包,有兩個演示如何使用它。 DelphiMaps也包裝了Google的routeplanner,也有一個演示。這個空間太小,不能進一步解釋;問一個新的問題,如果你需要幫助。 –

5

如果您正在尋找一個完整的解決方案,在Delphi中使用Google Maps API,我強烈建議您使用Delphi框架Google地圖。它可以使用全部 API函數沒有單行HTMLJavaScript

例如:

procedure TForm1.FormShow(Sender: TObject); 
begin 
    with Script(WebBrowser1) do 
    if not APILoaded 
     then LoadAPIAsync(InitMap); 
end; 

procedure TForm1.InitMap(Sender: TObject); 
var 
    MapOptions: TMapOptions; 
begin 
    with Sender as TScript do 
    begin 
    MapOptions:=New(Google.Maps.MapOptions); 
    with MapOptions do 
    begin 
     Zoom:=8; 
     Center:=New(Google.Maps.LatLng(-34.397,150.644)); 
     MapTypeID:=Google.Maps.MapTypeID.Roadmap; 
    end; 
    New(Google.Maps.Map(MapOptions)); 
    end; 
end; 

路線規劃也容易獲得。有一些演示。

不幸的是,您仍然可以從當前的German forum下載。一個單獨的網站正在建設中。如果註冊或下載有問題,我可以發送一封電子郵件與框架。

關注

+0

哇 - 我會看看這個。謝謝!! – rickstep