使用Gears获取当前地理位置

In: 前端开发

5 09 2009

晚上在Google Code上闲逛,发现google gears从0.4版开始新增了一个获取当前地理位置的Geolocation API。试用了一下,居然准确地找到了我的当前位置,很神奇~401705e0-e662-44bc-9099-72c5e4ad7ed7

相信大家对Google Gears都已经很熟悉了,三大主要功能:本地存储DataBase、本地服务器LocalServer、任务池WorkerPool,外加一个桌面相关功能DeskTop。如果对Gears的这几个特性不是很了解,可以参看老六写的这篇文章。在我这篇文章里只讨论Geolocation API。

这个API使用起来很简单,下面简单的列一下:

var geo = factory.create('beta.geolocation'); //创建geolocation对象
var okCallback = function(d){
 
alert('当前位置(纬度,经度): ' + d.latitude + ',' + d.longitude);
};
var errorCallback = function(err){
 
alert(err.message);
};
geo.getCurrentPosition(okCallback , errorCallback);

基本就是这样了,在这之前创建factory以及获得permission的代码就不贴了,看下源码就OK了。

另外,随手抓包看了下这个API实现的原理,其实就是post当前用户的一些信息给google服务器(我这里,post的数据有wifi的ssid,信号强度啥的),服务器就会返回当前的位置,这个技术上没啥特别的,关键在于数据的丰富程度与是否精确。

request:
post http://www.google.com/loc/json
data { “access_token” : “2:FIcsRNHXKylSLYpZ:N7RPZxjyMIX4AiMb”, “host” : “test.*.*.com”, “radio_type” : “unknown”, “request_address” : false, “version” : “1.1.0″, “wifi_towers” : [ { "mac_address" : "00-*-*-*-*-ea", "signal_strength" : -73, "ssid" : "***" }, { "mac_address" : "00-*-*-*-*-aa", "signal_strength" : -80, "ssid" : "*-*" }, { "mac_address" : "00-*-*-*-*-ba", "signal_strength" : -44, "ssid" : "*-*" } ] }

response:
{“location”:{“latitude”:40.050772,”longitude”:116.308348,”accuracy”:150.0}}

大家有空也可以试一试,看Gears能不能找到你的位置(需要先安装Google Gears,Chrome已经内置了Gears)。点这里

再来看看这些吧

3 Responses to 使用Gears获取当前地理位置

Avatar

welefen

10月 27th, 2009 at 1:06 pm

还不错。貌似不是很精准,我的地理位置竟然到了闵行区。

Avatar

星月迷梦

02月 5th, 2010 at 12:30 am

准备试一下··

Avatar

崔凯

03月 9th, 2010 at 12:07 pm

我跑到了东城……

Comment Form

关于我

JerryQu,当前从事前端开发,@中国北京
这里是我随便记录东西的地方~
需要找我,我的联系方式在这里 »
查找QGYWebim相关信息,请点这里 »

共享