Delphi XE6 通过JavaScript API调用百度地图

参考昨天的内容,有朋友还是问如何调用百度地图,也是,谁让咱都在国内呢,没办法,你懂的。

 

首先去申请个Key,然后看一下百度JavaScript的第一个例子:http://developer.baidu.com/map/jsdemo.htm

下一步,就是把例子中的代码,移动TWebBrower中。

 

unit Unit3;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.WebBrowser,
  FMX.StdCtrls;

type
  TForm3 = class(TForm)
    WebBrowser1: TWebBrowser;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;

const
s='';//等于网页内容,我贴上来,就乱了,只好说明在这里。
s1=

'var map = new BMap.Map("allmap");'           
+'var point = new BMap.Point(116.404, 39.915);'   
+'map.centerAndZoom(point,15);'                    

+'map.enableScrollWheelZoom();'                           
;//要执行的JavaScript代码


implementation

{$R *.fmx}

procedure TForm3.Button1Click(Sender: TObject);
begin
 webbrowser1.EvaluateJavaScript(s1);//对网页执行JavaScript代码.
end;

procedure TForm3.FormCreate(Sender: TObject);
begin
  webbrowser1.LoadFromStrings(s,'http://api.map.baidu.com');//调入网页

end;

end.

 

注意的问题:

1.只有FMX.WebBrowser支持EvaluateJavaScript及Loadfromstring方法,VCL的TWebBrowser是不支持的。

2.FMX.WebBrowser只支持Android IOS,不支持Win32

3.LoadFromStrings调用网页时,要指定第二个参数,不然不显示地图

遗憾:

感觉地图的显示速度不好,点击按钮时,会闪一下,归纠于FMX的性能还是这种调用方式的原因产生的?还不清楚。

最后,附上截图:

Delphi <wbr>XE6 <wbr>通过JavaScript <wbr>API调用百度地图

后记:

baidu为手机提供了专用的Javascript API,叫极速XXX,我试着调用,不出地图,不知什么原因。估计用这个,能提高反应速度。

http://blog.sina.com.cn/s/blog_44fa172f0101ri82.html

posted @ 2015-11-26 21:52  findumars  Views(1812)  Comments(0Edit  收藏  举报