将 iframe 用于 google 地图在多设备 Delphi 中嵌入 api
Using iframe for google maps embed api in multi device Delphi
目前我有这样的代码可以在我的 TWebBrowser
中显示带有我当前位置的 google 地图
procedure TForm1.LocationSensor1LocationChanged(Sender: TObject; const
OldLocation, NewLocation: TLocationCoord2D);
begin
var URLString := Format('https://maps.google.com/maps?q=%s,%s&output=embed', [Format('%2.6f', [NewLocation.Latitude]), Format('%2.6f', [NewLocation.Longitude])]);
WebBrowser1.Navigate(URLString);
end;
如果我将我的 URL 用作 https://maps.google.com/maps?q=%s,%s
那么它可以正常工作,但是当我将我的 URL 用作 https://maps.google.com/maps?q=%s,%s&output=embed
时它会提示错误“The Google Maps Embed API 必须在 iframe 中使用”,如图所示
有什么办法可以在我的 delphi 项目中使用 iframe 吗?
如错误消息所述,Google 的嵌入式地图想要托管在 HTML <iframe>
中。 TWebBrowser
有一个 LoadFromStrings()
方法可以用于此目的,例如:
procedure TForm1.LocationSensor1LocationChanged(Sender: TObject;
const OldLocation, NewLocation: TLocationCoord2D);
begin
var URL := Format('https://maps.google.com/maps?q=%2.6f,%2.6f&output=embed', [NewLocation.Latitude, NewLocation.Longitude]);
var HTML = Format('<iframe src="%s" width="%d" height="%d" style="border:0;" allowfullscreen="" loading="lazy"></iframe>', [URL, <DesiredWidth>, <DesiredHeight>]);
WebBrowser1.LoadFromStrings(HTML, URL);
end;
目前我有这样的代码可以在我的 TWebBrowser
中显示带有我当前位置的 google 地图procedure TForm1.LocationSensor1LocationChanged(Sender: TObject; const
OldLocation, NewLocation: TLocationCoord2D);
begin
var URLString := Format('https://maps.google.com/maps?q=%s,%s&output=embed', [Format('%2.6f', [NewLocation.Latitude]), Format('%2.6f', [NewLocation.Longitude])]);
WebBrowser1.Navigate(URLString);
end;
如果我将我的 URL 用作 https://maps.google.com/maps?q=%s,%s
那么它可以正常工作,但是当我将我的 URL 用作 https://maps.google.com/maps?q=%s,%s&output=embed
时它会提示错误“The Google Maps Embed API 必须在 iframe 中使用”,如图所示
有什么办法可以在我的 delphi 项目中使用 iframe 吗?
如错误消息所述,Google 的嵌入式地图想要托管在 HTML <iframe>
中。 TWebBrowser
有一个 LoadFromStrings()
方法可以用于此目的,例如:
procedure TForm1.LocationSensor1LocationChanged(Sender: TObject;
const OldLocation, NewLocation: TLocationCoord2D);
begin
var URL := Format('https://maps.google.com/maps?q=%2.6f,%2.6f&output=embed', [NewLocation.Latitude, NewLocation.Longitude]);
var HTML = Format('<iframe src="%s" width="%d" height="%d" style="border:0;" allowfullscreen="" loading="lazy"></iframe>', [URL, <DesiredWidth>, <DesiredHeight>]);
WebBrowser1.LoadFromStrings(HTML, URL);
end;