TWebBrowser中的Google街景

时间:2012-07-09 13:59:41

标签: delphi google-maps twebbrowser google-street-view

有没有人让StreetView在TWebBrowser控件中显示成功?

我想以编程方式构建一个Url,并以简单的Delphi形式显示它。

这是我到目前为止的表格:

unit frmSView;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, SHDocVw, StdCtrls;

type
  TfrmStreetView = class(TForm)
    browserStreetView: TWebBrowser;
    txtAddress: TEdit;
    procedure txtAddressExit(Sender: TObject);
    procedure ShowSV(Lat: string; Lon: string);
  private
    // private declarations
  public
    // public declarations
  end;

var
  frmStreetView: TfrmStreetView;

implementation

{$R *.dfm}

procedure TfrmStreetView.ShowSV(Lat: string; Lon: string);
var
  Addr: string;
  Flags: OleVariant;
begin
  Addr := 'http://maps.google.com/maps?q=&&layer=c&&cbll=' + Lat + ',' + Lon + '&&cbp=12,0,0,0,0&&output=svembed';
  browserStreetView.Navigate(Addr, Flags, Flags, Flags, Flags);
  txtAddress.Text := Addr;
  ShowModal;
end;

procedure TfrmStreetView.txtAddressExit(Sender: TObject);
var
  Flags: OleVariant;
begin
  browserStreetView.Navigate(txtAddress.Text, Flags, Flags, Flags, Flags);
end;

end.

表单显示时:

  • 如果该位置没有街道视图信息,我会获得常规地图视图。
  • 如果有街景信息(在其他浏览器窗口中验证),则只显示灰色屏幕。

我猜测Flash播放器没有加载。

你们有什么想法吗?

此致

西蒙

2 个答案:

答案 0 :(得分:5)

你看过DelphiMaps project了吗?说明:

  

DelphiMaps库是一组旨在制作的Delphi组件   开发人员可以轻松地将GIS功能集成到其中   应用

     

包中包含以下包装:

     
      
  • Google Maps API(v3)
  •   
  • Google / Openstreetmap静态地图
  •   
  • Google地理编码API
  •   
  • Google Directions API
  •   
  • Google StreetView
  •   

Rodrigo Ruz在2010年的博客上发布了fully functional example

答案 1 :(得分:3)

我用Delphi写了很长时间但是如果我没记错的话,TWebBrowser控件是你系统上任何版本的Internet Explorer的浏览器部分。 “浏览器部分”表示HTML呈现器和Javascript解释器,但称为Internet Explorer的完整程序不止于此。它还有插件,如Flash,以及一些管理逻辑,可在需要时加载这些插件。

我建议您不要加载maps.google.com,而是可以使用V3 API创建一个简单的页面,该页面实现了没有Flash的街景视图(纯Javascript)。 尝试将此页面加载到您的TWebBrowser控件中,然后将pegman放到某个好处:

http://maps.forum.nu/v3/gm_streetview_V3.html