天天看点

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 XE6 通过JavaScript API调用百度地图

后记:

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

继续阅读