【移动应用开发技术】HTML5 geolocation和BaiduMap、BingMap、GoogleMap_第1页
【移动应用开发技术】HTML5 geolocation和BaiduMap、BingMap、GoogleMap_第2页
【移动应用开发技术】HTML5 geolocation和BaiduMap、BingMap、GoogleMap_第3页
【移动应用开发技术】HTML5 geolocation和BaiduMap、BingMap、GoogleMap_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】HTML5geolocation和BaiduMap、BingMap、GoogleMap

HTML5的地理位置定位感觉是很cool的能力,我们公司原先的定位是在android上完成的,现在我来尝试下使用HTML5的geolocation来做些事情看看。

HTML5的地理定位的采集方式:1.IP地址,2.GPS定位,3.MAC地址,4.GSM基站网络,5.用户定义的地址位老规矩,先简单的尝试下geolocationAPI应用先HTML的代码,那是相当简单[html]

view

plaincopy

<body>

<input

type="button"

value="get

Geo"

/>

</body>

javaScript的代码如下

[javascript]

view

plaincopy

$(

function()

{

$(":button").click(

function()

{

navigator.geolocation.getCurrentPosition(

function(e)

{

//成功回调

$.log(e.coords.accuracy);

//准确度

$.log(e.coords.latitude);

//纬度

$.log(e.coords.longitude);

//经度

$.log(e.coords.altitude);

//海拔高度

$.log(e.coords.altitudeAccuracy);

//海拔高度的精确度

$.log(e.coords.heading);

//行进方向

$.log(e.coords.speed);

//地面的速度

$.log(new

Date(e.timestamp).toLocaleDateString());//采集日期

$.log(new

Date(e.timestamp).toLocaleTimeString());//采集时间

},

function(e)

{

//失败回调

$.log(e.message);

//错误信息

$.log(e.code);

//错误代码

},

{//可选参数

JSON格式

"enableHighAcuracy":

false,

//是否启用高精确度模

"timeout":

100,

//在指定的时间内获取位置信息

"maximumAge":

0//浏览器重新获取位置信息的时间间隔

}

);

}

);

}

);

现在你点击按钮,就可以在控制台看到经纬度和采样日期时间了。

那获得了经纬度的值,必然首先要做的就是地图定位了,现在主流的地图服务我知道的有:baidu,google,和bing,下面我来测试我们得到的经纬度在这三个地图服务中取得的地图图像吧。baidu和bing我都查了官方的sample,但是,但是,我要狠狠的批评google,我用chrome浏览器访问googleMapApi中的sample,竟然chrome告诉我“由于响应时间过长,导致“GoogleChrome浏览器”无法加载网页。该网站可能已崩溃,或者您的互联网连接出现了问题。”google,你看着办吧。

先看看我们的body[javascript]

view

plaincopy

<body>

<div>

<input

type="button"

value="get

Geo"

/>

</div>

<div

id="baiduMap"

style="width:

300px;

height:

300px;

float:

left;">

</div>

<div

id="googleMap"

style="width:

300px;

height:

300px;

float:

left;">

</div>

<div

id="bingMap"

style="width:

300px;

height:

300px;

float:

left;

position:

relative;">

</div>

</body>

然后引入三家的服务脚本[javascript]

view

plaincopy

<script

type="text/javascript"

src="/api?v=1.3"></script>

<script

src="/maps/api/js?sensor=false"></script>

<script

charset="UTF-8"

type="text/javascript"

src="/mapcontrol/mapcontrol.ashx?v=6.2&mkt=en-us"></script>

以下是测试代码[javascript]

view

plaincopy

$.log

=

function(msg)

{

console.log(msg);

}

$(

function()

{

$(":button").click(

function()

{

navigator.geolocation.getCurrentPosition(

function(e)

{

//成功回调

$.log(e.coords.accuracy);

//准确度

$.log(e.coords.latitude);

//纬度

$.log(e.coords.longitude);

//经度

$.log(e.coords.altitude);

//海拔高度

$.log(e.coords.altitudeAccuracy);

//海拔高度的精确度

$.log(e.coords.heading);

//行进方向

$.log(e.coords.speed);

//地面的速度

$.log(new

Date(e.timestamp).toLocaleDateString());

//采集日期

$.log(new

Date(e.timestamp).toLocaleTimeString());

//采集时间

createBaiduMap(e.coords.longitude,

e.coords.latitude);

createBingMap(e.coords.longitude,

e.coords.latitude);

createGoogleMap(e.coords.longitude,

e.coords.latitude);

},

function(e)

{

//失败回调

$.log(e.message);

//错误信息

$.log(e.code);

//错误代码

},

{//可选参数

JSON格式

enableHighAcuracy:

false,

//是否启用高精确度模

timeout:

100,

//在指定的时间内获取位置信息

maximumAge:

0//浏览器重新获取位置信息的时间间隔

}

);

}

);

}

);

function

createBaiduMap(longitude,

latitude)

{

var

map

=

new

BMap.Map("baiduMap");

var

point

=

new

BMap.Point(longitude,

latitude);

map.centerAndZoom(point,

15);

}

function

createGoogleMap(longitude,

latitude)

{

var

map

=

new

google.maps.Map(document.getElementById("googleMap"),

{

center:

new

google.maps.LatLng(latitude,

longitude),

zoom:

14,

mapTypeId:

google.maps.MapTypeId.ROADMAP,

mapTypeControl:

false,

navigationControlOptions:

{

style:

google.maps.NavigationControlStyle.SMALL

}

}

);

}

function

createBingMap(longitude,

latitude)

{

var

map

=

new

VEMap("bingMap");

var

LA

=

new

VELatLong(latitude,

longitude);

map.LoadMap(LA,

14,

VEMapStyle.Road,

false,

VEMapMode.Mode2D,

true,

1);

}

基本代码完成后,我们看到googleMap(以后简称gm)和bingMap(以后简称mm)默认有缩放都控制器,baiduMpa(以后简称bm)没有带,现在为bm加上控制器[javascript]

view

plaincopy

function

createBaiduMap(longitude,

latitude)

{

var

map

=

new

BMap.Map("baiduMap");

var

point

=

new

BMap.Point(longitude,

latitude);

map.centerAndZoom(point,

15);

map.addControl(new

BMap.NavigationControl());

}

为bm添加了一个NavigationControl就可以看到效果了。

现在我们想在地图上做一个标注,把我们给点的经纬度标注出来,同时我们也看看地图服务商和HTML5的定位是不是比较准,三个地图服务商的加标注代码如下[javascript]

view

plaincopy

function

createBaiduMap(longitude,

latitude)

{

var

map

=

new

BMap.Map("baiduMap");

var

point

=

new

BMap.Point(longitude,

latitude);

map.centerAndZoom(point,

15);

map.addControl(new

BMap.NavigationControl());

var

marker

=

new

BMap.Marker(point);

//标注

marker.setLabel(new

BMap.Label("我在这里"));

map.addOverlay(marker);

}

function

createGoogleMap(longitude,

latitude)

{

var

map

=

new

google.maps.Map(document.getElementById("googleMap"),

{

center:

new

google.maps.LatLng(latitude,

longitude),

zoom:

14,

mapTypeId:

google.maps.MapTypeId.ROADMAP,

mapTypeControl:

false,

navigationControlOptions:

{

style:

google.maps.NavigationControlStyle.SMALL

}

}

);

var

marker

=

new

google.maps.Marker({

position:

new

google.maps.LatLng(latitude,

longitude),

map:

map,

title:

"我在这里"

});

}

function

createBingMap(longitude,

latitude)

{

var

map

=

new

VEMap("bingMap");

var

LA

=

new

VELatLong(latitude,

longitude);

map.LoadMap(LA,

14,

VEMapStyle.Road,

false,

VEMapMode.Mode2D,

true,

1);

//图钉

var

myPolygon

=

new

VEShape(VEShapeType.Pushpin,

new

VELatLong(latitude,

longitude,

0,

VEAltitudeMode.Default));

map.AddShape(myPolygon);

myPolygon.SetTitle("我在这里");

}

如果我在移动设备上进行采集数据的话,geo提供了一个异步的API:watchPosition,这个api是异步的,文档上说:当检测到设备的位置发生改变时,它返回设备的当前位置。当设备检索到一个新的位置,会触发geolocationSuccess回调函数并传递一个Position对象作为参数。如果发生错误,会触发geolocationError回调函数并传递一个PositionError对象。不过具体我还没有测试

代码和getCurrentPosition很像的[javascript]

view

plaincopy

$(

function()

{

$(":button").click(

function()

{

navigator.geolocation.watchPosition(

function(e)

{

//成功回调

$.log(e.coords.accuracy);

//准确度

$.log(e.coords.latitude);

//纬度

$.log(e.coords.longitude);

//经度

$.log(e.coords.altitude);

//海拔高度

$.log(e.coords.altitudeAccuracy);

//海拔高度的精确度

$.lo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论