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. STC-51开发板-单片机控制数码管&按键&点阵综合操作

    操作: 实现按下一个按键,对应的数码管和点阵显示相应的数字 代码: /*  *******************数码管按键综合项目********************* */ #include ...

  2. airway之workflow

    1)airway简介 在该workflow中,所用的数据集来自RNA-seq,气道平滑肌细胞(airway  smooth muscle cells )用氟美松(糖皮质激素,抗炎药)处理.例如,哮喘患 ...

  3. 使用js获取伪元素的content

    在测试过程中有时候会遇到反爬虫机制,一些元素会使用伪元素,这样在定位元素的时候会定位不到,这时候就要使用js来帮助定位,获取到想要的元素 下面是部分代码 //使用js获取伪元素的content Str ...

  4. jquery读取本地文件,Windows上报错。XMLHttpRequest cannot load xxx. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.k.cors.a.c

    问题: 测试报告,使用本地的json.txt文件,结果文件读取失败,报错如下: XMLHttpRequest cannot load xxx. Cross origin requests are on ...

  5. 网站连接数据库连接不上原因是ip地址与端口号格式不对

    192.168.1.1:8080这样连接一直出错, 后来改为192.168.1.1,8080就可以了 原因是格式不对,把冒号给为逗号就可以了

  6. Spring/AOP框架, 以及使用注解

    1, 使用代理增加日志, 也是基于最原始的办法 import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; ...

  7. css3文字截断

    width:200px; height:14px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; text-overflow ...

  8. 使用VisualStudio开发php的图文设置方法[xyytit]

    早先在asp横行的年代,php和asp一样,大都都是html中夹杂代码,说实话,这时候IDE的确用处不是很大,倒是类似于dw之类的设计器甚为上手.   现在,三层.mvc之类的思想遍地开花,使得代码和 ...

  9. 使用select实现多并发的socket的功能

    select是一个io多路复用的io模型,也叫做事件驱动的io模型,我们今天用select来实现一个多并发的socket的聊天的程序 先看下server端的代码 import socket impor ...

  10. MD5加密获得文件的MD5码

    哈希函数将任意长度的二进制字符串映射为固定长度的小型二进制字符串.加密哈希函数有这样一个属性:在计算不大可能找到散列为相同的值的两个不同的输入:也就是说,两组数据的哈希值仅在对应的数据也匹配时才会匹配 ...