2010-07-21 77 views
2

在這個項目中我的目標是在2009年德爾福創建通過谷歌地圖軟件,它會像this one,但在不同的方式。在這個項目中,用戶可以在地圖上添加一個點,在圖標旁邊的每一個點,我會添加一些信息和這些信息應與圖標關聯,因此如果用戶想點擊其中一個方面的信息會自動打開。我的問題是我可以創建信息,但是當我關閉它時,我無法再打開它。我如何管理這個問題我的代碼如下,非常感謝。谷歌地圖中的Delphi 2009應用

procedure TfrmMain.btnAddMarkerClick(Sender: TObject); 
var 
    Doc2: IHTMLDocument2; 
    Win2: IHTMLWindow2; 
    latlng: String; 
    information: String; 
begin 
    Doc2 := WebBrowser1.Document as IHTMLDocument2; 
    Win2 := Doc2.parentWindow; 
    information:='its a example'; 
    latlng := '"' + leLat.Text + '", "' + leLng.Text + '"'; 

    Win2.execScript('map.addOverlay(new GMarker(new GLatLng(' + latlng + ')));', 'JavaScript'); 
    Win2.execScript('map.openInfoWindow(new GLatLng(' + latlng + '),document.createTextNode("'+information +'"));','JavaScript'); 

    end; 

設計如下: alt text http://img829.imageshack.us/img829/8474/adszdi.png

+0

你說的意思是「我可以創造的信息,但是當我關閉它,我不能再次打開它」?你能否詳細說明一下? – 2010-07-21 17:36:56

+2

項目你所描述聽起來像谷歌自己的「我的地圖」功能。你確定你需要做這個項目嗎? – 2010-07-21 17:43:18

回答

3

@asilloo,谷歌地圖API不保存您的標記,這些信息只適用於瀏覽器的當前會話中,如果你需要堅持(存儲)您必須手動完成的標記,您可以使用數據庫或xml文件。我建議你使用KML格式來完成這項任務。

+2

只是好奇。我看到你的答案中總是包含「@ ...」。你有這樣做的理由嗎?對我來說,你的回答顯然是針對提問的人? – 2010-07-21 18:18:09

+1

@Marjan。如果有多個評論(可能會或可能不會按時間順序),它有助於解決特定用戶的問題。這是一個事實上的標準... – 2010-07-21 18:47:42

+1

@弗朗索瓦:是的評論。但RRUZ也在回答這個問題,這讓我很好奇他是否也有理由在那裏做這件事。 – 2010-07-21 18:57:49

0

我通過嵌入在Delphi中的Flash OCX控件創建了谷歌地圖的Flex(閃存)API的解決方案。對我來說它快得多,我能夠傳遞/檢索複雜的參數。

也許你試試看: http://www.delphiflash.com/

0

在你的代碼的問題是,你不保存到信息窗口的任何引用。信息顯示,事實上,當你關閉它時,它就消失了。

如果我知道你想什麼正確的,你應該添加一個事件處理程序來創建的標記。

你應該做的是這樣的:

  • 創建一個標記對象
  • 附上一個onclick事件處理程序。在該事件處理程序打開信息窗口
  • 標記添加到地圖

代碼:

Win2.execScript('var marker=new GMarker(new GLatLng(' + latlng + '));', 'JavaScript'); 
Win2.execScript('GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml("'+information +'"); });', 'JavaScript'); 
Win2.execScript('map.addOverlay(marker);', 'JavaScript'); 

(抱歉,如果這裏有一些語法錯誤。我已經編輯它在計算器這個討厭的文本框)

讓我知道,如果它的工作原理...