DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: jaytang
今日帖子: 0
在线用户: 0
导航: 论坛 -> 文档资料 斑竹:liumazi,ruralboy  
作者:
男 jopher3 (樵夫的马六甲) ▲▲▲▲▲ -
普通会员
2014/3/28 10:30:17
标题:
AppMethod/XE5下实现的百度地图接口控件 浏览:4298
加入我的收藏
楼主: 1、控件简介
   为简化移动开发应用中对地图类应用的编写难度,加快开发效率,特实现了此地图接口控件。主要功能:
   区域内分类信息检索
   地理信息模糊检索
   地名定位
   IP定位
   静态地图生成
   动态地图位置标注
   GPS转百度坐标纠偏转换


2、搭建个测试程序,准备测试
此帖子包含附件:
JPEG 图像
大小:46.8K
----------------------------------------------
樵夫的大马甲
作者:
男 jopher3 (樵夫的马六甲) ▲▲▲▲▲ -
普通会员
2014/3/28 10:31:15
1楼: 3、看测试程序源码、运行效果图

unit main;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.WebBrowser,
  MBBaiduMap, MBConnection, FMX.Layouts, FMX.Memo, FMX.StdCtrls, FMX.Objects,
  System.Sensors, FMX.Sensors;

type
  TForm1 = class(TForm)
    StyleBook1: TStyleBook;
    ToolBar1: TToolBar;
    Panel1: TPanel;
    Memo1: TMemo;
    MBConn: TMBConnection;
    BaiduMap: TMBBaiduMap;
    Button1: TButton;
    Button2: TButton;
    Line1: TLine;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Panel2: TPanel;
    Browser: TWebBrowser;
    Locator: TLocationSensor;
    Line2: TLine;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;
    Button12: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure LocatorLocationChanged(Sender: TObject; const OldLocation,
      NewLocation: TLocationCoord2D);
    procedure Button10Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
   long,lat: double;
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

//
// 退出...
procedure TForm1.Button2Click(Sender: TObject);
begin
   MBConn.Disconnect;
   Halt;
end;

//
// 连接断开处理...
procedure TForm1.Button8Click(Sender: TObject);
begin
   if Button8.Text='连接' then
      begin
         if mbconn.connect then
          begin
          Button8.Text:='断开';
          memo1.lines.add('连接应用服务器成功!');
          end
         else
          memo1.lines.add('连接应用服务器失败!');
      end
   else
      begin
         mbconn.disconnect;
         Button8.Text:='连接';
         memo1.lines.add('与应用服务器断开!');
      end;
end;

//
// 清除提示...
procedure TForm1.Button9Click(Sender: TObject);
begin
   Memo1.Lines.Clear;
end;

//
// 公共信息查询...
procedure TForm1.Button3Click(Sender: TObject);
var
   ObjectList: TGeocodingList;
   Obj: TGeocoding;
   i: integer;
begin
   if BaiduMap.GeocodingQuery('银行','上海',5,1,ObjectList) then
      begin
         memo1.Lines.Add('公共信息查询成功!内容如下:');
         for i := 0 to ObjectList.count-1 do
          begin
          Obj:=TGeocoding(ObjectList.items[i]);
          memo1.Lines.Add(obj.ObjName+'('+obj.ObjLong.ToString+','+obj.ObjLat.ToString+')');
          end;
         FreeAndNil(ObjectList);
      end
   else
      memo1.Lines.Add('公共信息查询失败!');
end;

//
// 地名定位测试...
procedure TForm1.Button4Click(Sender: TObject);
begin
   if BaiduMap.Addr2Geo('浙江省杭州市桐庐县横村镇',long,lat) then
      begin
         memo1.Lines.Add('地名定位成功!结果如下:');
         memo1.Lines.Add('经度='+Long.ToString+'  纬度='+lat.ToString);
      end
   else
      memo1.Lines.Add('地名定位失败!');
end;

//
// IP定位...
procedure TForm1.Button6Click(Sender: TObject);
var
   Location: TIPLocation;
begin
   if BaiduMap.IP2Geo('',Location) then
      begin
         memo1.Lines.Add('IP定位成功!结果如下:');
         memo1.Lines.Add('经度='+Location.Long.ToString+'  纬度='+Location.lat.ToString);
         long:=Location.Long;
         Lat:=Location.Lat;
         FreeAndNil(Location);
      end
   else
      memo1.Lines.Add('地名定位失败!');
end;

//
// URL生成...
procedure TForm1.Button7Click(Sender: TObject);
var
   url: string;
begin
   url:=BaiduMap.LocationURL(long,lat);
   if url<>'' then
      begin
         memo1.Lines.Add('定位URL生成成功!结果如下:');
         memo1.Lines.Add('URL='+url);
         try
          browser.Navigate(url);
         except
          memo1.Lines.Add('访问URL失败!');
         end;
      end
   else
      memo1.Lines.Add('定位URL生成失败!');
end;

//
// 模糊查询...
procedure TForm1.Button10Click(Sender: TObject);
var
   ObjectList: TSuggestionList;
   Obj: TSuggestion;
   i: integer;
begin
   if BaiduMap.SuggestionQuery('钱江','杭州',ObjectList) then
      begin
         memo1.Lines.Add('地理信息模糊查询成功!内容如下:');
         for i := 0 to ObjectList.count-1 do
          begin
          Obj:=TSuggestion(ObjectList.items[i]);
          memo1.Lines.Add(obj.CityName+obj.Name);
          end;
         FreeAndNil(ObjectList);
      end
   else
      memo1.Lines.Add('地理信息模糊查询失败!');
end;

//
// 生成上次定位点的静态地图...
procedure TForm1.Button11Click(Sender: TObject);
var
   Stream: TMemoryStream;
begin
   if baidumap.GetMapImage(long,lat,400,300,11,Stream) then
      memo1.Lines.Add('获取静态地图成功!Size='+inttostr(Stream.Size))
   else
      memo1.Lines.Add('获取静态地图失败!');
   if assigned(Stream) then
      FreeAndNil(stream);
end;

//
// GPS定位开启...
procedure TForm1.Button5Click(Sender: TObject);
begin
   Locator.Active:=true;
   memo1.lines.add('GPS定位开启,准备测试GPS纠偏...');
end;

//
// GPS定位停止...
procedure TForm1.Button12Click(Sender: TObject);
begin
   Locator.Active:=false;
   memo1.lines.add('GPS定位停止啦!');
end;

//
// GPS纠偏...
procedure TForm1.LocatorLocationChanged(Sender: TObject; const OldLocation,
  NewLocation: TLocationCoord2D);
var
   gx,gy: double;
   x,y: double;
   url: string;
begin
   gx:=NewLocation.Longitude;
   gy:=NewLocation.Latitude;
   if BaiduMap.GPS2Baidu(gx,gy,x,y) then
      begin
        memo1.lines.add('地理坐标纠偏一次成功!');
        url:=BaiduMap.LocationURL(x,y);
        Browser.Navigate(url);
      end
  else
     memo1.lines.add('地理坐标转换失败!');
end;

end.
此帖子包含附件:
JPEG 图像
大小:79.4K
----------------------------------------------
樵夫的大马甲
作者:
男 jxj0561 (jxj0561) ★☆☆☆☆ -
盒子活跃会员
2014/3/28 10:53:05
2楼: 不错,下来试试
----------------------------------------------
-
作者:
男 tintin1943 (零输好) ★☆☆☆☆ -
盒子活跃会员
2014/3/28 12:53:32
3楼: 樵夫,You are my superstar
----------------------------------------------
不喧哗 自有声 心静 思远 志行千里
作者:
男 runzi_111 (xuelanghua) ★☆☆☆☆ -
普通会员
2014/3/28 13:40:46
4楼: 老樵,给社区做了不好事情,大家应该感谢他。
----------------------------------------------
将Delphi进行到底!
作者:
男 marco_hsu (marco) ★☆☆☆☆ -
盒子活跃会员
2014/3/28 13:54:29
5楼: 真是个好人,顶上去
----------------------------------------------
I Love Delphi
作者:
男 sbzldlb (边缘人) ★☆☆☆☆ -
盒子活跃会员
2014/3/28 18:25:39
6楼: 控件如何下载?
----------------------------------------------
Delphi Android移动开发讨论论坛 老大富翁论坛历史数据搜索引擎
作者:
男 sbzldlb (边缘人) ★☆☆☆☆ -
盒子活跃会员
2014/3/28 18:33:55
7楼: 下载地址是在哪里呢?
----------------------------------------------
Delphi Android移动开发讨论论坛 老大富翁论坛历史数据搜索引擎
作者:
男 linktong (小聪) ★☆☆☆☆ -
盒子活跃会员
2014/3/28 20:42:41
8楼: TMBBaiduMap 这个控件哪儿有得下?
----------------------------------------------
-
作者:
男 jopher3 (樵夫的马六甲) ▲▲▲▲▲ -
普通会员
2014/3/28 21:10:05
9楼: 各位别急,在QuickBurro V4.32里会带此控件

QuickBurro V4.32定于3月30日发布,到时会通知
----------------------------------------------
樵夫的大马甲
作者:
男 bpearl (bpearl) ▲▲▲▲▲ -
普通会员
2014/3/29 0:01:06
10楼: 求教: 此控件的运行生效是否依赖于用户手机上装有百度地图才可以?
----------------------------------------------
丢了编码快10年,现在重新捡起来!
作者:
男 jopher3 (樵夫的马六甲) ▲▲▲▲▲ -
普通会员
2014/3/29 6:25:48
11楼: 不用的
----------------------------------------------
樵夫的大马甲
作者:
男 yzdbs (学无止境) ★☆☆☆☆ -
盒子活跃会员
2014/3/29 9:04:20
12楼: 估计是基于http方式
----------------------------------------------
┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻
┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳
┻┳┻┳┻┳learning stream media.┳┻┳┻┳┻
┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳
┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻
┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳
作者:
男 bdl1 (bdl1) ▲▲▲▲▲ -
普通会员
2014/3/29 14:51:11
13楼: 顶!
----------------------------------------------
-我的博客
作者:
男 crystalmoon (crystalmoon) ★☆☆☆☆ -
盒子活跃会员
2014/3/29 16:33:59
14楼: 非常感谢,感谢樵夫的工作。
----------------------------------------------
-
作者:
男 jopher3 (樵夫的马六甲) ▲▲▲▲▲ -
普通会员
2014/4/23 7:26:36
15楼:  新增地理位置之间的测距功能:GetDistance(Long1,Lat1,Long2,Lat2: double):double

下面是实测,先看正确的距离值:
此帖子包含附件:
JPEG 图像
大小:74.5K
----------------------------------------------
樵夫的大马甲
作者:
男 jopher3 (樵夫的马六甲) ▲▲▲▲▲ -
普通会员
2014/4/23 7:27:32
16楼: 再看测算情况,从结果看,计算正确:
此帖子包含附件:
JPEG 图像
大小:52.2K
----------------------------------------------
樵夫的大马甲
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行150.3906毫秒 RSS