路痴路野一个,用过凯翼X5GPS定位系统的人来说说准不准?

当前位置 & &
& GPS室内就废了?最新解决办法:精度惊人!
GPS室内就废了?最新解决办法:精度惊人!
22:30:57&&作者:
编辑:朝晖 &&)
让小伙伴们也看看:
阅读更多:
好文共享:
文章观点支持
当前平均分:0(0 次打分)
[02-14][02-12][02-12][02-09][02-09][02-09][02-05][02-05][02-03][02-03]
登录驱动之家
没有帐号?
用合作网站帐户直接登录查看: 9761|回复: 5
html gps定位非常不准
论坛徽章:18
本帖最后由 liyihongcug 于
14:49 编辑
代码如下&script src=&/maps/api/js?sensor=false&&&/script&&script&var eleGmap = document.getElementById(&gmap&);var showMap = function(position) {& & //经纬度所在的位置对象& & var pos = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);& & //根据pos对象中的经纬度显示Google地图了哈!& &&&//...};if (navigator.geolocation) {& & eleGmap.innerHTML = '&div id=&help&&&img src=&/study/image/loading.gif& /&&/div&';& & //一次性获取位置的请求& & navigator.geolocation.getCurrentPosition(showMap);} else {& & eleGmap.innerHTML = '&div id=&help&&您的浏览器不支持地理位置 O(∩_∩)O~&/div&';}&/script&html gps定位非常不准& &,web上可以正常显示但是手机上很难出现位置??
近项目上用到HTML5的geolocation用于定位,用Chrome和手头的手机测试好好的功能,到终端用户那里反馈一些手机不能定位,最后确定出是部分三星、摩托的部分国行Android手机“阉割”了谷歌GMS服务包,导致HTML5的geolocation无法使用wifi和基站定位服务导致。值得一提的是前期在stackoverflow和google groups里搜到对症描述的解决方案(貌似Android 2.*或者三星自身的问题)全部失效,因为介是个“中国特色”的问题-_lll首先介绍下HTML5的Geolocation功能。通常情况下,我们是先判断浏览器是否支持geolocation, 如果不支持,可以提示错误,或者进入其他逻辑处理流程,现在移动端的智能手机浏览器绝大部分都是支持的。
if( navigator.geolocation ){
& & navigator.geolocation.getCurrentPosition(
& && &&&updateLocation, handleLocationError,
& && &&&{maximumAge:60000, timeout:50000, enableHighAccuracy:true}
& && &&&);
& & alert( &对不起,您的浏览器不支持html5定位&);
但是navigator.geolocation为true只是代表浏览器支持,浏览器还是要通过调用手机的定位功能来实现,所以上面的getCurrentPosition后面,分别后updateLocation和handleLocationError两个分支,分别对应成功而和失败的后续处理,这篇文章提到的由于缺少谷歌GMS服务包造成geolcation失效的情况就是走到了handleLocationError分支。
function handleLocationError(error) {
& & switch(error.code){
& && &&&case 0:
& && && & alert(&获取位置信息出错!&);
& && &&&case 1:
& && && & alert(&您设置了阻止该页面获取位置信息!&);
& && &&&case 2:
& && && & alert(&浏览器无法确定您的位置!&);
& && &&&case 3:
& && && & alert(&获取位置信息超时!&);
具体的返回值可以查手册,缺少谷歌GMS服务包的手机,会进入case 2,其实是“无法使用定位服务”。写到这里,只是说明了原因,那有没有什么解决方案呢。搜索了下,原来提供地图和定位相关服务的不止是google一家,还有百度、高德、搜狗,下面介绍下百度的api(1)百度地图javascript API geolocation/map/jshome.htm咋一看,百度js api也有自己的geolocation() 这个取代html5自带的不就可以了么,经过实验,真是图样图森破了,原来所有的javascript API都还是调用的浏览器自身的geolocation进行封装实现的,也就是说如果原本不能wifi+基站定位,用百度、高德的javascript api的效果是一样的。这里要说明的是,如果是开发Android原生软件的话,可以在APP里封装百度地图定位的SDK,这个是可以解决没有谷歌GMS服务包无法定位的问题的,因为百度地图定位SDK实际上是起到和谷歌服务包里面的定位模块一样的作用,由这里也可以看到HTML5 Webapp和原生APP的一个差别,不是一个层面的解决方案。(2)使用百度的LocalCity() 根据IP定位到城市既然上面说的HTML5自带的geolocation和百度Javascript API的geolocation都不能用了,那么就完全不能定位了么,我们这里暂时采用了一个方案,就是使用百度的LocalCity接口,进行IP定位,可惜这个只能返回城市和市中心的坐标,对于需要精确定位的LBS产品基本没有意义(根源上IPv4时代通过IP定位的想法本来就不是很靠谱吧),但是对我们的产品不失为一种可以接收的降级方案,当然用户体验上需要通过文字说明或者弹窗的形式告知用户一。
function myFun(result){
& & var latitude = result.center.
& & var longitude = result.center.
& & //doSomething(latitude,longitude);
var myCity = new BMap.LocalCity();
myCity.get(myFun);
(3)使用百度的IP定位API/map/ip-location-api.htm
var ajaxObj = createXHR();
ajaxObj.onreadystatechange = function() {
& & if (ajaxObj.readyState == 4) {
& && &&&if ((ajaxObj.status &= 200 && ajaxObj.status & 300) || ajaxObj.status == 304) {
& && && && &var jsonObj = eval(&(& + ajaxObj.responseText + &)&);
& && && && &var point_x=jsonObj.content.point.x;
& && && && &var point_y=jsonObj.content.point.y;
& && && && &var axis = new BMap.MercatorProjection().pointToLngLat(new BMap.Pixel(point_x,point_y));
& && && && &var latitude = axis.
& && && && &var longitude = axis.
& && &&&//doSomething(latitude,longitude);
ajaxObj.open(&POST&, &/get_ip.php&, true);
ajaxObj.setRequestHeader(&Content-Type&, &application/x-www-form-urlencoded&);
ajaxObj.send(&sendmessage=&);
这理论上讲应该是个更好的解决方案,但是从实际使用测试来看,由于IP定位的局限性,实际上虽然返回的坐标不是市中心,但是也基本没有参考价值,所以只是把实现方法列一下,或许等到IPv6时代会有用吧。这个api有几个值得注意的地方(1)由于安全起见,所以Javascript是不支持直接获取IP地址的,所以需要服务器端,此外,如果手机程序是webapp或者和服务器不在一个域的话,还需要跨域支持,我们这里使用的是CORS跨域,get_ip.php如下(包括获取IP地址,和根据IP请求百度IP定位API获得城市信息)
& & $client_ip = getRealIpAddr();
& & $baidu_result = file_get_contents('http://api./location/ip?ak=ab31a87a5ae231f7xxxxxx&ip='.$client_ip);
& & //注意上面的ak最后6位略去,需要使用自己免费注册的百度api的ak
& & header(&Access-Control-Allow-Origin: *&); //CROS跨域
& & header(&Content-Type:text/ charset=utf-8&);
& & echo $baidu_
& & function getRealIpAddr(){
& && &&&if (!empty($_SERVER['HTTP_CLIENT_IP'])){
& && && && &$ip=$_SERVER['HTTP_CLIENT_IP'];
& && &&&}elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
& && && && &$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
& && &&&}else{
& && && && &$ip=$_SERVER['REMOTE_ADDR'];
& && &&&return $
(2)百度IP定位API获得的坐标point需要经过坐标系转换成lat lng采用和其它接口公用参见上面js里的
var axis = new BMap.MercatorProjection().pointToLngLat(new BMap.Pixel(point_x,point_y));
var latitude = axis.
var longitude = axis.
好了,本来还准备放一个DEMO的,暂时没有时间,以后可能会补充上来
论坛徽章:18
本帖最后由 liyihongcug 于
22:01 编辑
1。 GPS 精确定位。也就是楼上各位说的jsr179规范。
2。基站模糊定位。有移动提供的服务,也有通过google的不公开的api提供的服务。179 Location API for J2ME
对着api看下,应该能懂的
因为工作需要,把以前编写的一个GPS测试程序拿出来重新修改了一下。这个程序说起来有些历史了,是我11年编写的,那时候学了Android开发没多久,算是一个实验性的作品。现在工作需要,重新拿出来修整。同时发现我对android的GPS服务了解并不深,所以今天特意阅读了有关GPS服务的一些资料,把相关知识点记录下来。
本人做了GPS相关的嵌入式软件已经几年了,所以说起要做个测试GPS定位模块的程序,第一反应就是串口读取GPS模块的数据,然后解析GPS的NMEA格式数据。NMEA是一种标准化数据格式,不仅仅GPS上应用了,其他一些工业通信也是使用这种标准化数据格式。解析相关数据然后显示出来,就完成了一个基本的GPS定位测试功能。
查了一下才发现Android上做GPS相关定位服务,不需要读取NMEA数据分析,Android已经封装好了相关服务,你要做的就是调用API。这个不知道应该觉得爽还是觉得纠结。(Android也提供了读取NMEA接口,下面会说到)
1、Android 定位服务
下面我们先来看看Android有关定位服务提供的支持:
Android定位服务都是位于location下,上面都有相关说明,这里就不详细解析。有一点有需要说说的
是:GpsStatus.NmeaListener 官方的说法是可以读取NMEA数据,但是我这里测试发现,并没有读取到NMEA的数据。查阅过一些资料,说是google在底层并没有实现数据反馈的功能。有时间,需要查看一下源码。
2、LocationManager定位
复制代码 代码如下:
//获取定位服务
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
//判断是否已经打开GPS模块
if (locationManager.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER))
  //GPS模块打开,可以定位操作& && &
复制代码 代码如下:
// 通过GPS定位
String LocateType= locationManager.GPS_PROVIDER;
Location location = locationManager.getLastKnownLocation(LocateType);
// 设置监听器,设置自动更新间隔这里设置1000ms,移动距离:0米。
locationManager.requestLocationUpdates(provider, 1000, 0, locationListener);
// 设置状态监听回调函数。statusListener是监听的回调函数。
locationManager.addGpsStatusListener(statusListener);
//另外给出 通过network定位设置
String LocateType= locationManager.NETWORK_PROVIDER;
Location location = locationManager.getLastKnownLocation(LocateType);
3、GpsStatus监听器
上面给出了定位服务的初始化设置步骤,但我们都知道GPS卫星是定期广播数据的,也就是说会定期收到卫星的GPS数据。我们并不能跟卫星主动申请数据,只能被动接收数据。(中国的北斗2倒是可以发送卫星报文给卫星)因此我们需要注册一个监听器来处理卫星返回的数据。
复制代码 代码如下:
private final GpsStatus.Listener statusListener = new GpsStatus.Listener()
& & public void onGpsStatusChanged(int event)
& &&& // GPS状态变化时的回调,获取当前状态
& &   GpsStatus status = locationManager.getGpsStatus(null);
    //自己编写的方法,获取卫星状态相关数据
& && & GetGPSStatus(event, status);
4、获取搜索到的卫星
复制代码 代码如下:
private void GetGPSStatus(int event, GpsStatus status)
& & Log.d(TAG, &enter the updateGpsStatus()&);
& & if (status == null)
   else if (event == GpsStatus.GPS_EVENT_SATELLITE_STATUS)
     //获取最大的卫星数(这个只是一个预设值)
& && &&&int maxSatellites = status.getMaxSatellites();
& && &&&Iterator&GpsSatellite& it = status.getSatellites().iterator();
& && &&&numSatelliteList.clear();
     //记录实际的卫星数目
& && &&&int count = 0;
& && &&&while (it.hasNext() && count &= maxSatellites)
       //保存卫星的数据到一个队列,用于刷新界面
& && && && &GpsSatellite s = it.next();
& && && && &numSatelliteList.add(s);
& && && && &count++;
& && && && &Log.d(TAG, &updateGpsStatus----count=&+count);
& && &&&mSatelliteNum = numSatelliteList.size();
& &&&else if(event==GpsStatus.GPS_EVENT_STARTED)
& && && &//定位启动& &
& &&&else if(event==GpsStatus.GPS_EVENT_STOPPED)
& && && &//定位结束& &
上面就是从状态值里面获取搜索到的卫星数目,主要是通过status.getSatellites()实现。获取到的GpsSatellite对象,
保存到一个队列里面,用于后面刷新界面。上面是获取GPS状态监听器,除了GPS状态外,我们还需要监听一个服务,
就是:LocationListener,定位监听器,监听位置的变化。这个对做定位服务的应用来说,十分重要。
5、LocationListener监听器
复制代码 代码如下:
private final LocationListener locationListener = new LocationListener()
& && &&&public void onLocationChanged(Location location)
     {
& && && && &//当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发
& && && && &updateToNewLocation(location);& && && && &
& && && && &Log.d(TAG, &LocationListener&&onLocationChanged&);
& && &&&public void onProviderDisabled(String provider)
     {
& && && && &//Provider被disable时触发此函数,比如GPS被关闭
& && && && &Log.d(TAG, &LocationListener&&onProviderDisabled&);
& && &&&public void onProviderEnabled(String provider)
     {
& && && && &// Provider被enable时触发此函数,比如GPS被打开
& && && && &Log.d(TAG, &LocationListener&&onProviderEnabled&);
& && &&&public void onStatusChanged(String provider, int status, Bundle extras)
     {
& && && && &Log.d(TAG, &LocationListener&&onStatusChanged&);
& && && && &// Provider的转态在可用、暂时不可用和无服务三个状态直接切换时触发此函数
& && && && &if (status == LocationProvider.OUT_OF_SERVICE || status == LocationProvider.TEMPORARILY_UNAVAILABLE)       {    
& && && && &}
位置监听回调是用来处理GPS位置发生变化的时候,自动回调的方法,我们可以从这里获取到当前的GPS数据。另外我们可以通过回调函数提供的location参数,获取GPS的地理位置信息,包括经纬度、速度、海拔等信息。
6、获取地理位置信息(经纬度、卫星数目、海拔、定位状态)
复制代码 代码如下:
//location对象是从上面定位服务回调函数的参数获取。
mLatitude = location.getLatitude();   // 经度
mLongitude = location.getLongitude();  // 纬度
mAltitude = location.getAltitude();   //海拔
mSpeed = location.getSpeed();       //速度
mBearing = location.getBearing();    //方向
7、获取指定卫星信息(方向角、高度角、信噪比)
复制代码 代码如下:
//temgGpsSatellite就是我们上面保存的搜索到的卫星
float azimuth = temgGpsSatellite.getAzimuth();
float elevation = temgGpsSatellite.getElevation();
float snr = temgGpsSatellite.getSnr();
利用方向角、高度角我们可以绘画出一个二维图形,表示卫星在地球哪个方位,信噪比作用更大。一般的卫星定位测试软件,都提供了信噪比的状态图,这是表示GPS模块搜星能力的代表。
8、绘画二维卫星位置图
下面是我做的GPS测试的效果图:
详细出处参考:
论坛徽章:18
本帖最后由 liyihongcug 于
15:30 编辑
100米 普通
美国卫星 10米
基站 ip定位都可以&&但webgis有偏差 You'll first need to look up an address (duh), but this trick only works if the address is centered (it's centered by default). So, moving the map around will not make this work. When the address you want to find latitude and longitude for is dead center, copy and paste this code into your browser bar:P
javascript:void(prompt('',gApplication.getMap().getCenter()));PYou'll get a popup with the coordinates. How cool is that, I ask you! — Wendy BoswellP [Tech-Recipes ]
在网页中弹出层,显示Google地图,获取经纬度并进行相关操作
由于本人纯属菜鸟级“貌似程序员”,一直不敢在园子里胡乱涂鸦,而在这篇文章发出之前,也是思考再三,难道就一直躲在园子的角落里,不敢出声,还是偶尔露个头,让大伙狂拍,由于园子里“小牛”,“大牛”多的是,而我这个初生牛犊终于在技术战胜理智之后,写了这篇让高手们甚至可以嗤之以鼻的烂文,当然在学习中没有什么不好意思的,所谓不耻下问,学习中是不存在羞耻与否,想到这里随即把昨天做的东西分享一下,权作抛砖引玉,望高手们猛拍板砖,小弟虚头待拍!如此开场白,定让大伙烦不可耐,还是切入正题;
& && &要说那个公司比较厚道,一般人都会说Google还比较不错的,不像微软总是“逼”我们用盗版,就拿Google Maps 来说,完全免费的,只需注册一个KEY,就可以随心所欲的搞自己的Google maps ,当然我在此之前没有深入研究过,刚好项目中要运用,于是就临时抱一下佛脚,总算是达到预期的效果。需求也很简单就是商家在添加自己的资料时,在Google maps 找一下经纬度,添加后在网页的地图中显示商家,并做标记等。拿到这个需求时,于是就在脑海中形成思路,且一步一步做出来:
& && &1.在页面中添加一个按钮,可以弹出一个层来,弹出层后用滤镜把页面控制一下,虽然在CSS2.1中,“filter”不是已知的 CSS 属性名。但并不妨碍其结果,显示,隐藏层代码如下
& && & function showDiv(id)
& && && &{
& && && && &var bgdiv = $(&#& + id);
& && && && &$(&&div id='filterDiv'&&/div&&).addClass(&filterDiv&)
& && && && && && && && && && && & .width(&100%&)
& && && && && && && && && && && & .height(&100%&)
& && && && && && && && && && && & .click(function () { hideDiv(id); })
& && && && && && && && && && && & .appendTo(&body&)
& && && && && && && && && && && & .fadeIn(200);
& && && &&&bgdiv.css({ &position&: &absolute& })
& && && && && &.animate({ left: &200px&,
& && && && && && & top: &250px&, opacity: &show&
& && && && && &}, &slow&);
& && &&&//点击确定时删除层叠,隐藏地图,并为文本框赋值,达到预期效果
& && && &function hideDiv(id)
& && && && &$(&#filterDiv&).remove();
& && && && &$(&#& + id).animate({ left: 0, top: 0, opacity: &hide& }, &slow&);
& && &&&}&&
& && &&&在这里width,height都给了100%,而且层的定位也是给死的,在实际运用中可以变通一下,这里调用了Jquery,所以要把
& && &&&&script src=&Scripts/jquery-1.4.1.js& type=&text/javascript&&&/script&导进来,可以忽略jQuery版本
2.页面代码
& &&div id='div-id' style=&width: 550 height:440 & class=&sideDiv&&&&
& && && && &&div class=&mapDiv& style=&width: 540 height:405 & id=&map& & &/div&
& && && && & &input id=&btnClose& type=&button& value=&确定&/&
& && &&&&/div&
& & &input type=&button& id=&btnTest&&&value=&弹出地图&/&&br /&
&&&asp:TextBox ID=&TextBox1& runat=&server&&&/asp:TextBox&
&&&asp:TextBox ID=&TextBox2& runat=&server&&&/asp:TextBox&
&&两个TextBox是用来保存经纬度的
3.CSS代码如下:
&&&style type=&text/css&&
& && &&&.sideDiv {& &
& && && && &z-index: 9999;
& && && && &margin-bottom: 3& &
& && && && &display:& &
& && && && &position:& &
& && && && &border:solid 1px #6e8& &
& && &&&}& &
& && &&&.mapDiv {& &
& && && && &clear:& &
& && && && &margin: 4& &
& && && && &padding: 2& &
& && &&&.filterDiv {& &
& && && && &color:#C7EDCC;
& && && && &background-color:
& && && && &position:
& && && && &top:0
& && && && &left:0
& && && &&&filter:alpha(opacity=50);
& & &/style&
& & 在CSS中,给z-index属性足够大,层叠的效果就不必担心
& & 而filter的属性在IE中显示要设置alpha(opacity=50)
&&4.加载Google地图时先给一个key
& &&script src=&&
type=&text/javascript&&&/script&
如果是中文显示则要把修改成
有了这个key直接可以写个方法,在页面加载就可以了
&script type=&text/javascript&&
& && &&&function initialize() {
& && && && &if (GBrowserIsCompatible()) {
& && && && && & //加载地图在div中显示
& && && && && & var map = new GMap2(document.getElementById(&map&));
& && && && && & //设置中心坐标,缩放等级
& && && && && & map.setCenter(new GLatLng(31.0.634346), 13);
& && && && && & //控制器类型
& && && && && & map.addControl(new GLargeMapControl(), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(10, 10)));
& && && && && & //加入卫星和混合地图标签
& && && && && & map.addControl(new GHierarchicalMapTypeControl());
& && && && && & //鼠标滑轮控制地图缩放
& && && && && & map.enableScrollWheelZoom();
& && && && && & //搜索控件,便于快速定位到商家地址
& && && && && & map.enableGoogleBar();
& && && && && &//定义一个标记
& && && && && & var myMarker =
& && && && && & //点击获取经纬度
& && && && && & clickListener = GEvent.addListener(map, &click&, function (marker, point) {
& && && && && && &&&if (point) {
& && && && && && && && &alert(&经度& + point.x + &,纬度& + point.y);
& && && && && && && && &//把获得的经纬度保存起来
& && && && && && && && &document.getElementById(&&%=TextBox1.ClientID %&&).value = point.x;
& && && && && && && && &document.getElementById(&&%=TextBox2.ClientID %&&).value = point.y;
& && && && && && &&&}
& && && && && && &&&if (myMarker != null) {
& && && && && && && && &//移除之前的标记
& && && && && && && && &map.removeOverlay(myMarker);
& && && && && && &&&}
& && && && && && &&&myMarker = new GMarker(point);
& && && && && && &&&//在点击位置加标记
& && && && && && &&&map.addOverlay(myMarker);
& && && && && & }
& && && && &}
&&如果用模板页时在模板页中添加&body & 在内容窗体中
&&用js调用:&script language=&javascript& type=&text/javascript&&
& && && &initialize();
& & &/script&
上面是 v2已经被淘汰 ,使用v3方法如下
& &//事件处理&&function codeEvent()
& &{& && &//双击& && &
& &google.maps.event.addListener(map,'dblclick',function(even t)
& &{& && &
& &map.setCenter(event.latLng);& &&&
& && &&&var marker = new google.maps.Marker
& && &&&({//双击的时候给个标 记,并显示个信息& && && &&&
& && && && & map: map,& && && && && && && && &
& && && && && && && && && && && && &position: event.latLng,& & //注意此处,获取标记的 经纬度的方法& && && && && &zIndex:1,& && && && && &draggable:true,& && && && && &title:'my tag'& && && & });& && &
& && && && && && && && && && && && && & infowindow.setContent('my home');& && && &infowindow.open(map, marker);& && &});& &
& && && && && && && && && && && && && && &//鼠标移动& &
& && && && && && && && && && && && && && && &google.maps.event.addListener(map,'mouseover',function(){& && && & //alert(&run mouseover&);& && &}); }& && &
//导航处理 function route() {& && &&&// Clear any previous route boxes from the map& && &&&clearBoxes();& && && && && & // Convert the distance to box around the route from mile s to km& && &&&distance = parseFloat(400) * 1.609344;& && && && && &/**& && &&&DirectionsRequest 对象 一共有10个可配置参数& && &&&导航DirectionService.route方法必须的参数对象 有三个必须 配置的属性:开始地点、目的地,导航类型& && &&&*/& && &&&var request = {& && && & origin: document.getElementById(&from&).value,& && && && & //开始地点 可以为地点名或者LatLng对象& && && & destination: document.getElementById(&to&).value,& && && &//目的地& &可以为地点名或者LatLng对象& && && & provideRouteAlternatives: true,& && && && && && && && && &&&//是否提供替代路线&&可选参数& && && & travelMode: google.maps.DirectionsTravelMode.DRIVING& & //导航类型 BICYCLING(自行车方式)、DRIVING(驾车)、WALKING(自定义)& && &&&}& && && && && &/*导航方法。参数为DirectionsRequest 和一个回调函数& && && && &其中回调函数的参数为& && && && & 1、DirectionsResult 只有一个属性 DirectionsRoute[]对象 数组。&&
& && && && &&&当DirectionsRequest 中的provideRouteAlternatives&&设置为true 时有多个数据集,否则数组的长度为1& && && && &2、DirectionsStatus& && &&&*/& && &&&directionService.route(request, function(result, status)&&{& && && & if (status == google.maps.DirectionsStatus.OK) {& && && &&&directionsRenderer.setDirections(result);& && && && && &alert(&共有 & + result.routes.length + & 种导航方案 &);& && && && &/*DirectionsRoute 对象& & 导航路线的对象& && && && && && && && && &*/& && && && &var path = result.routes[0].overview_&&//返回&&D irectionsRoute 对象& && && && &var boxes = routeBoxer.box(path, distance); //通过 ro uteBoxer对象画出路线图& && && &&&drawBoxes(boxes);& && && & } else {& && && && &alert(&Directions query failed: & + status);& && && & }& && & });& &&&}& && && && && && && &// 描路线的方法& &&&function drawBoxes(boxes) {& && & boxpolys = new Array(boxes.length);
& && &for (var i = 0; i & boxes. i++) {& && &//&&alert(boxes);& &&&//画矩形点描出路径& && && & boxpolys = new google.maps.Rectangle({& & //构造器的 参数 RectangleOptions类型& && && & /*& && && && &&&RectangleOptions:共9个可配置参数 详细见API& && && && && && && && && & */& && && && &bounds: boxes,& && &&&//LatLngBounds 对象,描点的位 置& && && && &fillOpacity: 0,& && &&&//背景的不透明度 0为透明& && && &&&strokeOpacity: 0.5,& & //导航线的透明度 0为透明& && && && &strokeColor: '#000000',& & //背景颜色& && && && &strokeWeight: 1,& && &&&//宽度& && && && &map: map& && && & });& && & }& &&&}& && && &&&// 清除路线缓存& &&&function clearBoxes() {& && & if (boxpolys != null) {& && && & for (var i = 0; i & boxpolys. i++) {& && && && &boxpolys.setMap(null);& && && & }& && & }& && &&&boxpolys =& && &}
& &&/script& &/head&&&&body&& &&div id=&map_canvas& style=&width: 500; height: 500;&&&/div&& & &div&& && &&input id=&address& type=&textbox& value=&伍家岭&&& &&&&input type=&button& value=&查询&&& &&&&input type=&button& value=&显示中心点&&& &&/div&& &&br&& & 从&input id=&from& type=&text& value=&星沙&&& &到&input id=&to& type=&text& value=&华悦大厦&&&&&input type=&button& value=&导航&&& && &&&&iframe src=&/weather.htm& width=&168& height=&60& frameborder=&no& border=&0& marginwidth=&0& marginhei ght=&0& scrolling=&no&&&/iframe&&&&br&&br&&br&&br&& &&script src=&/ip2/ip1.js&&&/script&&&&/body& &/html&
/view/1f52c2ef12df83e.html
论坛徽章:18
本帖最后由 liyihongcug 于
15:52 编辑
好不容易弄明白
成都电子科大的博士 和一个老美在美国西部大学申请专利搞的这个定位技术
ip定位好差 ----------(以太网)
但现在wifi以及无线网卡的大规模普及已经把误差大大缩小,他们说误差是100.
我实际检查发现一般有200-500左右的误差 ,这还是使用国外的地图,至于百度地图等等还没有对比。
gps的误差-------------??&&(如果android java开发取的数据很准 网页html的gps确实好差)
手机上如何打开gps关闭wifi 那就非常准确 ---老外http://localhost:8080/testtask/gps02.html1
&!-- 允许在登入数据库的时候读写其中的属性表,并上传改变的值 --&
&uses-permission android:name=&android.permission.ACCESS_CHECKIN_PROPERTIES& /&
&!--允许应用访问范围(如WIFI)性的定位 --&
&uses-permission android:name=&android.permission.ACCESS_COARSE_LOCATION& /&
&!-- 允许应用访问精确(如GPS)性的定位 --&
&uses-permission android:name=&android.permission.ACCESS_FINE_LOCATION& /&
&!--允许应访问额外的提供定位的指令 --&
&uses-permission android:name=&android.permission.ACCESS_LOCATION_EXTRA_COMMANDS& /&
&!-- 允许应用创建用于测试的模拟定位提供者 --&
&uses-permission android:name=&android.permission.ACCESS_MOCK_LOCATION& /&
&!--允许应用访问网络上的信息 --&
&uses-permission android:name=&android.permission.ACCESS_NETWORK_STATE& /&
&!--允许应用使用低版本视图的特征 --&
&uses-permission android:name=&android.permission.ACCESS_SURFACE_FLINGER& /&
&!--允许应用访问关羽Wi-Fi网络的信息 --&
&uses-permission android:name=&android.permission.ACCESS_WIFI_STATE& /&
&!--允许应用进入帐户认证 --&
&uses-permission android:name=&android.permission.ACCOUNT_MANAGER& /&
&!--允许应用为ACCOUNT_MANAGER扮演一个帐户认证系统 --&
&uses-permission android:name=&android.permission.AUTHENTICATE_ACCOUNTS& /&
&!--允许应用去统计电源信息 --&
&uses-permission android:name=&android.permission.BATTERY_STATS& /&
&!-- 允许应用告诉AppWidget哪个应用能够访问该AppWidget的数据 --&
&uses-permission android:name=&android.permission.BIND_APPWIDGET& /&
&!--必须通过关机接收者的请求来确保只有系统能够与之交互 --&
&uses-permission android:name=&android.permission.BIND_DEVICE_ADMIN& /&
&!-- 必须通过InputMethodService的请求来确保只有系统能够与之绑定 --&
&uses-permission android:name=&android.permission.BIND_INPUT_METHOD& /&
&!--必须通过WallpaperService的请求来确保只有系统能够与之绑定 --&
&uses-permission android:name=&android.permission.BIND_WALLPAPER& /&
&!-- 允许应用去连接蓝牙设备 --&
&uses-permission android:name=&android.permission.BLUETOOTH& /&
&!-- 允许应用找到与之连接的蓝牙设备 --&
&uses-permission android:name=&android.permission.BLUETOOTH_ADMIN& /&
&!--被请求废止设备(非常危险) --&
&uses-permission android:name=&android.permission.BRICK& /&
&!--允许应用发出一个程序包被移除的广播消息 --&
&uses-permission android:name=&android.permission.BROADCAST_PACKAGE_REMOVED& /&
&!-- 允许应用发出一个收到短信的消息 --&
&uses-permission android:name=&android.permission.BROADCAST_SMS& /&
&!--允许应用发出一个与intent相连的消息 --&
&uses-permission android:name=&android.permission.BROADCAST_STICKY& /&
&!--允许应用发出一个收到WAP PUSH的广播消息 --&
&uses-permission android:name=&android.permission.BROADCAST_WAP_PUSH& /&
&!--允许应用启动一个用户确认电话被拨打而不通过拨打电话的用户界面的的拨打程序 --&
&uses-permission android:name=&android.permission.CALL_PHONE& /&
&!--允许应用启动一个用户确认电话被拨打而不通过拨打电话的用户界面的的任意号码的拨打,包括紧急号码. --&
&uses-permission android:name=&android.permission.CALL_PRIVILEGED& /&
&!--能够启动照相机设备的请求 --&
&uses-permission android:name=&android.permission.CAMERA& /&
&!-- 允许应用去改变一个应用是否是激活状态 --&
&uses-permission android:name=&android.permission.CHANGE_COMPONENT_ENABLED_STATE& /&
&!-- 允许应用修改当前的配置,如本地设置 --&
&uses-permission android:name=&android.permission.CHANGE_CONFIGURATION& /&
&!-- 允许应用改变网络的连接状态 --&
&uses-permission android:name=&android.permission.CHANGE_NETWORK_STATE& /&
&!-- 允许应用进入Wi-Fi的组播方式 --&
&uses-permission android:name=&android.permission.CHANGE_WIFI_MULTICAST_STATE& /&
&!--允许应用改变Wi-Fi的连接状态 --&
&uses-permission android:name=&android.permission.CHANGE_WIFI_STATE& /&
&!--允许应用清除所有安装在设备上的应用的缓存 --&
&uses-permission android:name=&android.permission.CLEAR_APP_CACHE& /&
&!--允许应用清除使用者的信息资料 --&
&uses-permission android:name=&android.permission.CLEAR_APP_USER_DATA& /&
&!--允许从广播设备来更新或不更新本地的消息 --&
&uses-permission android:name=&android.permission.CONTROL_LOCATION_UPDATES& /&
&!--允许应用删除掉缓存文件 --&
&uses-permission android:name=&android.permission.DELETE_CACHE_FILES& /&
&!--允许应用删除掉程序包 --&
&uses-permission android:name=&android.permission.DELETE_PACKAGES& /&
&!-- 允许低权限的访问电源管理项 --&
&uses-permission android:name=&android.permission.DEVICE_POWER& /&
&!--允许应用诊断程序资源 --&
&uses-permission android:name=&android.permission.DIAGNOSTIC& /&
&!--允许应用禁用键盘锁 --&
&uses-permission android:name=&android.permission.DISABLE_KEYGUARD& /&
&!--允许应用从系统服务中恢复转储的信息 --&
&uses-permission android:name=&android.permission.DUMP& /&
&!--允许应用扩大或缩小状态栏 --&
&uses-permission android:name=&android.permission.EXPAND_STATUS_BAR& /&
&!--如制造商测试的应用一样用终极权限用户运行 --&
&uses-permission android:name=&android.permission.FACTORY_TEST& /&
&!--允许访问手电筒 --&
&uses-permission android:name=&android.permission.FLASHLIGHT& /&
&!--允许应用强制的返回操作而不论是不是最终的activity --&
&uses-permission android:name=&android.permission.FORCE_BACK& /&
&!--允许应用访问账目服务中的统计清单 --&
&uses-permission android:name=&android.permission.GET_ACCOUNTS& /&
&!-- 允许应用查找出任何程序包使用的空间 --&
&uses-permission android:name=&android.permission.GET_PACKAGE_SIZE& /&
&!-- 允许应用找到关于当前或最近运行的任务和在哪些acitivities里运行 --&
&uses-permission android:name=&android.permission.GET_TASKS& /&
&!-- 这个权限可以被内容提供者用来允许使用全程搜索他们的数据 --&
&uses-permission android:name=&android.permission.GLOBAL_SEARCH& /&
&!-- 允许访问硬件及周边设备. --&
&uses-permission android:name=&android.permission.HARDWARE_TEST& /&
&!--允许应用注入用户事件(键盘、触摸)到事件中然后提供给任意的窗口 --&
&uses-permission android:name=&android.permission.INJECT_EVENTS& /&
&!--允许应用安装一个位置提供商到位置管理器中 --&
&uses-permission android:name=&android.permission.INSTALL_LOCATION_PROVIDER& /&
&!--允许应用安装程序包. --&
&uses-permission android:name=&android.permission.INSTALL_PACKAGES& /&
&!--允许应用打开被部分系统用户接口使用的窗口 --&
&uses-permission android:name=&android.permission.INTERNAL_SYSTEM_WINDOW& /&
&!--允许应用打开网络套接口 --&
&uses-permission android:name=&android.permission.INTERNET& /&
&!--允许应用去呼叫killBackgroundProcesses(String).方法 --&
&uses-permission android:name=&android.permission.KILL_BACKGROUND_PROCESSES& /&
&!-- 允许应用去管理帐户管理者中的重要清单 --&
&uses-permission android:name=&android.permission.MANAGE_ACCOUNTS& /&
&!--允许应用去管理(创建、销毁、顺序)在窗口管理者中的应用 --&
&uses-permission android:name=&android.permission.MANAGE_APP_TOKENS& /&
&uses-permission android:name=&android.permission.MASTER_CLEAR& /&
&!--允许应用修改全局音频设定 --&
&uses-permission android:name=&android.permission.MODIFY_AUDIO_SETTINGS& /&
&!--允许改变拨打电话的状态-电源等 --&
&uses-permission android:name=&android.permission.MODIFY_PHONE_STATE& /&
&!--允许格式化可移除的存储仓库的文件系统 --&
&uses-permission android:name=&android.permission.MOUNT_FORMAT_FILESYSTEMS& /&
&!--允许装备或解除可移除的存储仓库的文件系统 --&
&uses-permission android:name=&android.permission.MOUNT_UNMOUNT_FILESYSTEMS& /&
&!--允许应用使它的activities更持久稳固 --&
&uses-permission android:name=&android.permission.PERSISTENT_ACTIVITY& /&
&!--允许应用监督、限定或终止呼出的电话 --&
&uses-permission android:name=&android.permission.PROCESS_OUTGOING_CALLS& /&
&!--允许应用读取用户的日历数据 --&
&uses-permission android:name=&android.permission.READ_CALENDAR& /&
&!-- 允许应用读取用户的联系人数据 --&
&uses-permission android:name=&android.permission.READ_CONTACTS& /&
&!--允许应用抓取屏幕和更多可获得的缓冲数据 --&
&uses-permission android:name=&android.permission.READ_FRAME_BUFFER& /&
&!--允许应用去读取(非写)用户浏览历史和书签 --&
&uses-permission android:name=&android.permission.READ_HISTORY_BOOKMARKS& /&
&!-- 允许应用去的当前键盘和控制的状态 --&
&uses-permission android:name=&android.permission.READ_INPUT_STATE& /&
&!--允许应用读取低级别的系统日志文件 --&
&uses-permission android:name=&android.permission.READ_LOGS& /&
&!--允许应用读取所有者的数据 --&
&uses-permission android:name=&android.permission.READ_OWNER_DATA& /&
&!--允许读取电话的状态 --&
&uses-permission android:name=&android.permission.READ_PHONE_STATE& /&
&!--允许应用读取短信息. --&
&uses-permission android:name=&android.permission.READ_SMS& /&
&!--允许应用读取同步的设置 --&
&uses-permission android:name=&android.permission.READ_SYNC_SETTINGS& /&
&!--允许应用读取同步的统计数据 --&
&uses-permission android:name=&android.permission.READ_SYNC_STATS& /&
&!--重新启动设备的请求 --&
&uses-permission android:name=&android.permission.REBOOT& /&
&!--允许应用接收在系统完成启动后发出的ACTION_BOOT_COMPLETED广播信息 --&
&uses-permission android:name=&android.permission.RECEIVE_BOOT_COMPLETED& /&
&!--允许应用去监听多媒体信息并记录和对起进行处理 --&
&uses-permission android:name=&android.permission.RECEIVE_MMS& /&
&!--允许应用去监听短消息并记录和对起进行处理 --&
&uses-permission android:name=&android.permission.RECEIVE_SMS& /&
&!--允许应用监听WAP push信息 --&
&uses-permission android:name=&android.permission.RECEIVE_WAP_PUSH& /&
&!--允许应用记录音频信息 --&
&uses-permission android:name=&android.permission.RECORD_AUDIO& /&
&!--允许应用改变任务的关系位置 --&
&uses-permission android:name=&android.permission.REORDER_TASKS& /&
&!--已废弃使用 --&
&uses-permission android:name=&android.permission.RESTART_PACKAGES& /&
&!--允许应用发送短消息. --&
&uses-permission android:name=&android.permission.SEND_SMS& /&
&!--允许应用查看和控制activities是怎样在系统中运行的 --&
&uses-permission android:name=&android.permission.SET_ACTIVITY_WATCHER& /&
&!--允许应用去控制当activities被覆盖后是否是立即接触结束 --&
&uses-permission android:name=&android.permission.SET_ALWAYS_FINISH& /&
&!-- 改变动画的比例因子 --&
&uses-permission android:name=&android.permission.SET_ANIMATION_SCALE& /&
&!--设置一个应用为调试模式 --&
&uses-permission android:name=&android.permission.SET_DEBUG_APP& /&
&!--允许低级别的设置屏幕的方向 --&
&uses-permission android:name=&android.permission.SET_ORIENTATION& /&
&!--已废弃 --&
&uses-permission android:name=&android.permission.SET_PREFERRED_APPLICATIONS& /&
&!--允许应用设置可以运行的最大数的应用进程 --&
&uses-permission android:name=&android.permission.SET_PROCESS_LIMIT& /&
&!-- 允许应用设置系统时间 --&
&uses-permission android:name=&android.permission.SET_TIME& /&
&!-- 允许应用设置系统时区时间 --&
&uses-permission android:name=&android.permission.SET_TIME_ZONE& /&
&!-- 允许应用设置壁纸 --&
&uses-permission android:name=&android.permission.SET_WALLPAPER& /&
&!--允许应用设置锁定的壁纸 --&
&uses-permission android:name=&android.permission.SET_WALLPAPER_HINTS& /&
&!--允许应用发出一个给所有稳定进程信号的请求 --&
&uses-permission android:name=&android.permission.SIGNAL_PERSISTENT_PROCESSES& /&
&!-- 允许应用打开、关闭或使状态栏或图标失去作用 --&
&uses-permission android:name=&android.permission.STATUS_BAR& /&
&!--允许应用访问内容提供者的签署认证 --&
&uses-permission android:name=&android.permission.SUBSCRIBED_FEEDS_READ& /&
&uses-permission android:name=&android.permission.SUBSCRIBED_FEEDS_WRITE& /&
&!-- 允许应用使用TYPE_SYSTEM_ALERT来打开窗口,并将窗口显示于其他应用的顶端 --&
&uses-permission android:name=&android.permission.SYSTEM_ALERT_WINDOW& /&
&!--允许应用更新设备资料信息 --&
&uses-permission android:name=&android.permission.UPDATE_DEVICE_STATS& /&
&!--允许应用从管理器得到授权请求 --&
&uses-permission android:name=&android.permission.USE_CREDENTIALS& /&
&!--允许应用访问震动器 --&
&uses-permission android:name=&android.permission.VIBRATE& /&
&!-- 允许使用电源锁定管理以使进程休眠或屏幕变暗 --&
&uses-permission android:name=&android.permission.WAKE_LOCK& /&
&!--允许应用去写入接入点设置 --&
&uses-permission android:name=&android.permission.WRITE_APN_SETTINGS& /&
&!--允许应用写(非读)用户的日历数据 --&
&uses-permission android:name=&android.permission.WRITE_CALENDAR& /&
&!--允许应用写(非读)用户的联系人数据 --&
&uses-permission android:name=&android.permission.WRITE_CONTACTS& /&
&!-- 允许应用写(非读)用户的外部存储器 --&
&uses-permission android:name=&android.permission.WRITE_EXTERNAL_STORAGE& /&
&!-- 允许应用修改Google服务地图 --&
&uses-permission android:name=&android.permission.WRITE_GSERVICES& /&
&!-- 允许应用写(非读)用户的浏览器历史和书签 --&
&uses-permission android:name=&android.permission.WRITE_HISTORY_BOOKMARKS& /&
&!--允许应用写(非读)用户的数据 --&
&uses-permission android:name=&android.permission.WRITE_OWNER_DATA& /&
&!--允许应用写或读当前系统设置 --&
&uses-permission android:name=&android.permission.WRITE_SECURE_SETTINGS& /&
&!-- 允许应用写或读系统设置 --&
&uses-permission android:name=&android.permission.WRITE_SETTINGS& /&
&!--允许应用写短消息信息 --&
&uses-permission android:name=&android.permission.WRITE_SMS& /&
&!-- 允许应用写同步设置 --&
&uses-permission android:name=&android.permission.WRITE_SYNC_SETTINGS& /&
论坛徽章:18
本帖最后由 liyihongcug 于
16:16 编辑
&&(dragon)
论坛徽章:0
还没有解决方法吗,最后英文文档是解决方法吗?原谅我英语太烂
itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有    
 北京市公安局海淀分局网监中心备案编号:10 广播电视节目制作经营许可证:编号(京)字第1149号

我要回帖

更多关于 路痴路野 的文章

 

随机推荐