我使用TGMDirection显示我点击的两个标记之间的路线。 这是同样的想法,但在使用GMLib 1.8的Delphi中: http://www.geocodezip.com/inventoresdegaragem_com_dbteste_indexB.html
第一个方向它显示没有任何错误。 当我再次点击另一个标记时,它会弹出并出现脚本错误: 行:539 人物:9 错误:无法检索属性close的值:object为null或undefined 代码:0 网址:about:blank
你有什么想法吗? 我使用的代码是:
procedure TForm1.GMMarker1DblClick(Sender: TObject; LatLng: TLatLng;
Index: Integer; LinkedComponent: TLinkedComponent);
begin
if legcount = 0 then
begin
marker1index :=Index;
legcount:=legcount+1;
end
else if legcount = 1 then
begin
legcount:=0;
marker2index :=Index;
GMDirection1.DirectionsRequest.Origin.LatLng := GMMarker1.Items[marker1index].Position;
GMDirection1.DirectionsRequest.Destination.LatLng := GMMarker1.Items[marker2index].Position;
GMDirection1.Execute;
if GMDirection1.DirectionsResult[routenr].Status = dsOK then
begin
GMDirection1.Free;
end;
routenr:=routenr+1;
end;
end;
答案 0 :(得分:2)
我在InfoWindowCloseAll JavaScript函数中发现了一个错误。您有两种方法可以解决此问题。
1.-简单:创建标记时,将Marker.InfoWindow.CloseOtherBeforeOpen属性设置为False;
2.-复杂:您需要修改HTML代码并重新编译资源和组件。为此,使用文本编辑器(如Notepad ++)打开。\ Resources \ map.html搜索InfoWindowCloseAll函数并使用以下代码进行修改:
function InfoWindowCloseAll() {
for (i = 0; i < linkedCompList.length; i++) {
if (linkedCompList[i] instanceof google.maps.InfoWindow) {
linkedCompList[i].close();
linkedCompList[i].GMLibIWIsOpen = false;
}
else {
if (!(linkedCompList[i] instanceof google.maps.DirectionsRenderer)) {
linkedCompList[i].GMLibInfoWin.close();
linkedCompList[i].GMLibInfoWin.GMLibIWIsOpen = false;
}
}
}
}
使用。\ Resources \ rc.cmd保存更改并编译资源 现在,重新编译GMLib组件和您的应用程序
此致
答案 1 :(得分:0)
要做到这一点非常容易。您需要3个GMLib组件(TGMMap,TGMMarker和TGMDirection)和TWebBrowser链接在一起。设置为false的GMDirection1.HiddeOthers属性并进入OnClick GMMap事件放置这行代码
procedure TForm1.GMMap1Click(Sender: TObject; LatLng: TLatLng; X, Y: Real);
begin
GMMarker1.Add(LatLng.Lat, LatLng.Lng);
if GMMarker1.Count mod 2 = 0 then
begin
GMDirection1.DirectionsRequest.Origin.LatLng.Assign(GMMarker1[GMMarker1.Count - 2].Position);
GMDirection1.DirectionsRequest.Destination.LatLng.Assign(GMMarker1[GMMarker1.Count - 1].Position);
GMDirection1.Execute;
end;
end;
这就是全部; - )
此致