Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GoogleMapsInsidelDelphi2009应用程序_Delphi_Browser_Delphi 2009_Maps - Fatal编程技术网

GoogleMapsInsidelDelphi2009应用程序

GoogleMapsInsidelDelphi2009应用程序,delphi,browser,delphi-2009,maps,Delphi,Browser,Delphi 2009,Maps,在这个项目中,我的目标是在Delphi 2009中通过GoogleMaps创建一个软件,它将像但以不同的方式。在这个项目中,用户可以在地图上添加一个点,在图标旁边的每个点中,我将添加一些信息,这些信息应该与图标相关,因此,如果用户想要单击其中一个,信息将自动打开。我的问题是我可以创建信息,但当我关闭它时,我无法再次打开它。我如何处理这个问题我的代码如下,非常感谢 procedure TfrmMain.btnAddMarkerClick(Sender: TObject); var Doc

在这个项目中,我的目标是在Delphi 2009中通过GoogleMaps创建一个软件,它将像但以不同的方式。在这个项目中,用户可以在地图上添加一个点,在图标旁边的每个点中,我将添加一些信息,这些信息应该与图标相关,因此,如果用户想要单击其中一个,信息将自动打开。我的问题是我可以创建信息,但当我关闭它时,我无法再次打开它。我如何处理这个问题我的代码如下,非常感谢

  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;
设计如下:

@asilloo,Google maps API不会保存您的标记,此信息仅在浏览器的当前会话中有效,如果您需要保存(存储)标记,您必须自己手动保存,您可以使用数据库或xml文件。我建议您使用此任务的格式

我通过在Delphi中嵌入flashocx控件,用googlemapsflex(Flash)API创建了解决方案。对我来说,这要快得多,而且我能够传递/检索复杂的参数

也许你可以试一试:

代码中的问题是没有保存对信息窗口的任何引用。信息窗口会显示出来,事实上,当你关闭它时,它就消失了

如果我正确理解了您想要的内容,您应该向创建的标记添加eventhandler

你应该这样做:

  • 创建标记对象
  • 附加onclick事件处理程序。在该事件处理程序中,您将打开“信息”窗口
  • 将标记添加到地图中
代码:

(如果这里有语法错误,很抱歉..我在stackoverflow上的这个蹩脚的文本框中编辑了它)


让我知道它是否有效…

您所说的“我可以创建信息,但当我关闭它时,我无法再次打开它”是什么意思?你能详细说明一下吗?你描述的这个项目听起来像谷歌自己的“我的地图”功能。你确定你需要做这个项目吗?只是好奇而已。我看到你的答案中总是包含“@…”。你这样做有什么原因吗?我觉得很明显,你的回答是针对提问者的?@Marjan。如果有多个注释(可能按时间顺序排列,也可能不按时间顺序排列),它有助于解决特定用户的问题。这是事实上的标准…@François:在评论中是的。但鲁兹在《答案》中也这么做了,这让我好奇,他是否也有理由在那里这么做。@François-说得好+1正确使用“事实上”。希望这条评论会被打乱顺序,以进一步证明这一点。@Marjan是twitter太多的副产品吗?
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');