unit U_map;

interface
//---------------------------------------------------//
//----------COPY BY 无言 QQ:4252181 -----------------//
//---------------------------------------------------//
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, SHDocVw, StdCtrls, MSHTML, StrUtils, ActiveX,
ExtCtrls;
//---------------------------------------------------//
//----------欢迎大家和我联系,软件开发 --------------//
//---------------------------------------------------//
type
TF_map = class(TForm)
grp1: TGroupBox;
WebBrowser: TWebBrowser;
grp2: TGroupBox;
grp3: TGroupBox;
grp4: TGroupBox;
tmr1: TTimer;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Edit1: TEdit;
Edit2: TEdit;
chk1: TCheckBox;
Edit3: TEdit;
Edit4: TEdit;
edt1: TEdit;
edt2: TEdit;
edt3: TEdit;
edt4: TEdit;
procedure FormCreate(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure btn3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure loadweb();
procedure btn4Click(Sender: TObject);
procedure AppMsg(var Msg: TagMsg; var Handled: Boolean);
procedure GetWebContent();
procedure tmr1Timer(Sender: TObject);
private
{ Private declarations }
lng, lat: string;
public
{ Public declarations }
end; var
F_map: TF_map;
const
Doc1: string = '<html>'
+ '<head>'
+ '<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />'
+ '<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />'
+ '<title>BAIDU MAP</title>'
+ '<style type="text/css">'
+ 'html{height:100%}' + 'body{height:100%;margin:0px;padding:0px}'
+ '#container{height:100%}'
+ '</style>'
+ '<script type="text/javascript"src="http://api.map.baidu.com/api?v=1.3"></script>'
+ '</head>'
+ '<body>'
+ '<div id="container"></div>'
//style="visibility:hidden; display:none">
+'<div id="centerweidu" style="visibility:hidden; display:none"></div>'
+'<div id="centerjingdu" style="visibility:hidden; display:none"></div>'
+'<div id="weidutemp" style="visibility:hidden;display:none"></div>'
+'<div id="jingdutemp" style="visibility:hidden;display:none"></div>'
+'<div id="weidu" style="visibility:hidden;display:none"></div>'
+'<div id="jingdu" style="visibility:hidden;display:none"></div>'
+'<div id="Distance" style="visibility:hidden;display:none"></div>'
+ '<script language="JavaScript" type="text/javascript">'
+ 'var map = new BMap.Map("container");' // 创建地图实例
+ 'map.addControl(new BMap.NavigationControl());'
+ 'map.addControl(new BMap.ScaleControl());'
+ 'map.addControl(new BMap.OverviewMapControl());'
+ 'map.addControl(new BMap.MapTypeControl(BMAP_ANCHOR_BOTTOM_RIGHT));' // 将标注添加到地图中
+ 'map.enableScrollWheelZoom();' // 启用滚轮放大缩小。
+ 'map.enableKeyboard();' // 启用键盘操作。
+ 'var centerpoint = new BMap.Point(126.666431,45.764502);' // 创建点坐标 126.666431, 45.764502
+ 'var marker = new BMap.Marker(centerpoint);' // 创建标注
+ 'map.addOverlay(marker);'
+ 'var label = new BMap.Label("哈尔滨海铭科技有限公司",{offset:new BMap.Size(20,-10)});'
+ 'marker.setLabel(label);'
+' map.centerAndZoom(centerpoint, 15);' // 初始化地图,设置中心点坐标和地图级别' +' map.addEventListener("mousemove", function(e){'
+' document.getElementById("weidutemp").innerHTML = e.point.lng;'
+' document.getElementById("jingdutemp").innerHTML = e.point.lat;});'
+' map.addEventListener("click", function(f){'
+' document.getElementById("weidu").innerHTML = f.point.lng;'
+' document.getElementById("jingdu").innerHTML = f.point.lat;});' +'function SetCarCenterPoint(newlng,newlat){'
+'centerpoint=new BMap.Point(newlng,newlat);'
+ 'var marker = new BMap.Marker(centerpoint);'
+ 'map.addOverlay(marker);'
+ 'var label = new BMap.Label("当前汽车坐标",{offset:new BMap.Size(20,-10)});'
+ 'marker.setLabel(label);'
+ 'map.panTo(centerpoint);'
+'}' +'function SetAutoCenterPoint(newlng,newlat){'
+'centerpoint=new BMap.Point(newlng,newlat);'
+ 'var marker = new BMap.Marker(centerpoint);'
+ 'map.addOverlay(marker);'
+ 'var label = new BMap.Label("4S店坐标",{offset:new BMap.Size(20,-10)});'
+ 'marker.setLabel(label);'
+ 'map.panTo(centerpoint);'
+'}' +'function PrintLine(newlng,newlat,oldlng,oldlat,biaoji){'
+'var point = new BMap.Point(newlng,newlat);' // 创建点坐标
+ 'map.panTo(point);'
// + 'if (biaoji=''0'')'
// +'{'
// + 'var marker = new BMap.Marker(point);'
// + 'map.addOverlay(marker);'
// +'}'
+ 'var polyline = new BMap.Polyline(['
+ 'new BMap.Point(oldlng,oldlat),'
+ 'new BMap.Point(point.lng, point.lat)'
+ '], {strokeColor:"blue", strokeWeight:4, strokeOpacity:0.5});'
+ 'map.addOverlay(polyline);'
+'}' +'function GetCenter(){'
+' var center = map.getCenter();'
+' document.getElementById("centerweidu").innerHTML = center.lng;'
+' document.getElementById("centerjingdu").innerHTML = center.lat;'
+'}'
+'function Distance(newlng,newlat){'
+'var pointA=centerpoint;'
+'var pointB=new BMap.Point(newlng,newlat);'
+'document.getElementById("Distance").innerHTML = map.getDistance(pointA,pointB);'
+'alert(''距离是:''+map.getDistance(pointA,pointB)+'' 米。'');'
// +'return map.getDistance(pointA,pointB);'
+'}'
+ '</script>'
+ '</body>'
+ '</html>';
implementation {$R *.dfm} procedure TF_map.AppMsg(var Msg: TagMsg; var Handled: Boolean);
var
mPoint: TPoint;
begin
if IsChild(WebBrowser.Handle, Msg.Hwnd) and (Msg.Message = WM_MOUSEMOVE) then
begin
GetCursorPos(mPoint);
GetWebContent;
Handled := True;
end;
end; function JavaScript(j: string): Boolean;
begin
try
// (F_map.WebBrowser.Document as IHTMLDocument2).parentWindow.execScript(j, 'JavaScript');
F_map.WebBrowser.OleObject.Document.parentWindow.execScript(j,
'JavaScript');
Result := True;
except
Result := false;
end;
end; procedure TF_map.btn1Click(Sender: TObject);
var
str: string;
begin
self.WebBrowser.OleObject.Document.parentWindow.execScript('GetCenter()',
'JavaScript');
end; procedure TF_map.btn2Click(Sender: TObject);
var
str: string;
begin
if (Edit1.Text <> '') and (Edit2.Text <> '') then
begin
self.WebBrowser.OleObject.Document.parentWindow.execScript
('Distance(' + Edit1.Text + ',' + Edit2.Text + ')', 'JavaScript');
end;
end; procedure TF_map.btn3Click(Sender: TObject);
var
biaoji: string;
begin
if lng = '' then
begin
lng := '126.666431'; // 126.666431,45.764502
end;
if lat = '' then
begin
lat := '45.764502';
end;
if chk1.Checked then
begin
biaoji := '';
end
else
begin
biaoji := '';
end;
if (Edit1.Text <> '') and (Edit2.Text <> '') then
begin
self.WebBrowser.OleObject.Document.parentWindow.execScript
('PrintLine(' + Edit1.Text + ',' + Edit2.Text + ',' + lng + ',' + lat +
',' + biaoji + ')', 'JavaScript');
lng := self.Edit1.Text;
lat := self.Edit2.Text;
end;
end; procedure TF_map.btn4Click(Sender: TObject);
begin
loadweb;
lng := '';
lat := '';
end; procedure TF_map.Button1Click(Sender: TObject);
var
str: string;
begin
if (Edit3.Text <> '') and (Edit4.Text <> '') then
begin
self.WebBrowser.OleObject.Document.parentWindow.execScript
('SetAutoCenterPoint(' + Edit3.Text + ',' + Edit4.Text +
')', 'JavaScript');
end;
end; procedure TF_map.loadweb();
var
sl: TStringList;
ms: TMemoryStream;
begin
self.WebBrowser.Silent := True;
WebBrowser.Navigate('about:blank'); (WebBrowser.Document as IHTMLDocument2)
.URL := 'http://127.0.0.1/';
while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
Application.ProcessMessages;
if Assigned(WebBrowser.Document) then
begin
sl := TStringList.Create;
try
ms := TMemoryStream.Create;
try
sl.Text := Doc1;
sl.SaveToStream(ms);
ms.Seek(, ); (WebBrowser.Document as IPersistStreamInit)
.Load(TStreamAdapter.Create(ms));
finally
ms.Free;
end;
finally
sl.Free;
end;
end;
end; procedure TF_map.tmr1Timer(Sender: TObject);
begin
GetWebContent;
end; procedure TF_map.FormCreate(Sender: TObject);
begin
loadweb;
//Application.OnMessage:=AppMsg;
end; procedure TF_map.FormShow(Sender: TObject);
begin
lng := '';
lat := '';
tmr1.Enabled := True;
end; procedure TF_map.GetWebContent();
var
html: IHTMLDocument2; // 定义网页元素
submitbutton: OleVariant; // 定义按钮
centerweidu, centerjingdu, weidu, jingdu, weidutemp,
jingdutemp: IHTMLElement; // 定义网页输入元素
begin
try
html := self.WebBrowser.Document as IHTMLDocument2;
centerweidu := html.all.item('centerweidu', ) as IHTMLElement;
centerjingdu := html.all.item('centerjingdu', ) as IHTMLElement;
weidu := html.all.item('weidu', ) as IHTMLElement;
jingdu := html.all.item('jingdu', ) as IHTMLElement;
weidutemp := html.all.item('weidutemp', ) as IHTMLElement;
jingdutemp := html.all.item('jingdutemp', ) as IHTMLElement;
edt1.Text := centerweidu.innerText;
edt2.Text := centerjingdu.innerText;
edt3.Text := weidutemp.innerText;
edt4.Text := jingdutemp.innerText;
Edit1.Text := weidu.innerText;
Edit2.Text := jingdu.innerText;
except
end;
end; end.

教程-Delphi调用百度地图API(XE8+WIN7)的更多相关文章

  1. delphi 调用百度地图api

    一.调用javascript的方法 两种: 第一种:采用自编函数的方法 function ExecuteJavaScript(WebBrowser:TWebBrowser; Code: string) ...

  2. 调用百度地图Api实现的查看地图功能的小插件

    1. 功能 bMap.js 可根据地理位置调用出百度地图,采用弹出框形式 2.用法 var city = '青岛市'; var address = '香港中路'; bMap.init({ city : ...

  3. 【c#】Form调用百度地图api攻略及常见问题

    首先,在Form中调用百度地图api,我们需要使用webbrowser控件,这个在前面的文章中已经讲过了,可以参照(http://blog.csdn.net/buptgshengod/article/ ...

  4. HTML5调用百度地图API获取当前位置并直接导航目的地的方法

    <!DOCTYPE html> <html lang="zh-cmn-Hans">     <meta charset="UTF-8&quo ...

  5. HTML5 调用百度地图API地理定位

    <!DOCTYPE html> <html> <title>HTML5 HTML5 调用百度地图API地理定位实例</title> <head&g ...

  6. 跨平台移动开发_PhoneGap 使用Geolocation基于所在地理位置坐标调用百度地图API

    使用Geolocation基于所在地理位置坐标调用百度地图API 效果图 示例代码 <!DOCTYPE html> <html> <head> <title& ...

  7. HTML5调用百度地图API进行地理定位实例

    自从HTML5的标准确定以后,越来越多的网站使用HTML5来进行开发.虽然对HTML5支持的浏览器不是很多,但是依然抵挡不了大伙对HTML5开发的热情.今天为大家带来的是使用HTML5调用百度地图AP ...

  8. HTML5页面直接调用百度地图API,获取当前位置,直接导航目的地

    <!DOCTYPE html> <html lang="zh-cmn-Hans"> <meta charset="UTF-8"&g ...

  9. 调用百度地图API的总结

    因为项目要用到百度地图,所以先摸索了一下,各种功能官方都有文档,点击可查看,文章的话我就直接写我用到的功能例子了,要用可以直接复制粘贴~ 一.主要涉及到的几个接口(先申请密钥): 1.技术一:坐标转换 ...

随机推荐

  1. Haddop SHUTDOWN_MSG: Shutting down NameNode at java.net.UnknownHostException: process01: process01: unknown error

    SHUTDOWN_MSG: Shutting down NameNode at java.net.UnknownHostException: process01: process01: unknown ...

  2. Ubuntu中解决机箱前置耳机没声音

    Ubuntu中解决机箱前置耳机没声音 安装pavucontrol软件: sudo apt-get install pavucontrol 然后直接运行pavucontrol打开软件: 将输出设备设置为 ...

  3. 43. Multiply Strings (String)

    Given two numbers represented as strings, return multiplication of the numbers as a string. Note: Th ...

  4. UNITY中的MOUSE点击事件的判断和AS3中的异同

    UNITY - 在UPDATE中轮询检测 Update() { if(Input.GetButton("Fire1") } AS3 - 事件监听 addEventListener. ...

  5. 通过阿里OSS文件服务返回的URL获取文件流下载

    我们都知道将文件上传到阿里的OSS文件服务上后,可以通过generatePresignedUrl(bucketName, key, expiration)方法获取该文件的防问路径,但是当我们知道该文件 ...

  6. iOS - OC - XML 解析 - NSXMLParser

    //4.解析数据 //4.1 创建XML解析器:SAX NSXMLParser *parser = [[NSXMLParser alloc]initWithData:data]; //4.2 设置代理 ...

  7. Paxos Made Simple

    Paxos一致性算法——分布式系统中的经典算法,论文本身也有一段有趣的故事.一致性问题是分布式系统的根本问题之一,在论文中,作者一步步的加强最初一致性问题(2.1节提出的问题)的约束条件,最终导出了一 ...

  8. MySql删除表、数据

    程度从强到弱 1.drop  table tb        drop将表格直接删除,没有办法找回 2.truncate (table) tb       删除表中的所有数据,不能与where一起使用 ...

  9. Apache虚拟主机/端口多开

    Apache就是强大啊,简单配置一下就可以再开启另一个端口的web服务. 笔者最近使用XAMPP架设php服务端.有一些特别的需求:同样的代码,需要开始不同的端口, 协议类型提供web服务给客户端(h ...

  10. SSH登录到远程linux机器并执行命令

    一. 1.JSch是Java Secure Channel的缩写.JSch是一个SSH2的纯Java实现.它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成 ...