2010-07-21 76 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'); 

(抱歉,如果这里有一些语法错误。我已经编辑它在计算器这个讨厌的文本框)

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