精华内容
下载资源
问答
  • 百度地图定位不准的问题

    千次阅读 2020-06-01 20:17:05
    百度地图定位不准问题描述原因解决方法 问题描述 在使用百度定位服务时,无论室内还是室外,位置总是不准。在回调处打印日志发现百度地图定位一直在用基站定位,可我配置的是高精度定位。 原因 最后找到原因,我在...

    百度地图定位不准

    问题描述

    在使用百度定位服务时,无论室内还是室外,位置总是不准。在回调处打印日志发现百度地图定位一直在用基站定位,可我配置的是高精度定位。

    原因

    最后找到原因,我在使用百度地图定位时只想获取单次定位,用完之后立马关闭定位想节省资源。而gps定位连接卫星需要几秒钟的时间(看手机好坏),在这期间百度地图定位会给你基站定位,于是我不断的mLocationClient.start(); mLocationClient.stop();,一直获取基站定位导致不准。

    解决方法

    调用mLocationClient.start(); 后用 mLocationClient.requestLocation();获取后面的定位,这样虽然会导致gps常开导致电量消耗极快,但是为了准确的定位木有办法。鱼和熊掌不可兼得。

    展开全文
  • 百度地图定位不准

    千次阅读 2017-03-21 22:07:33
    在android的百度地图开发中,有一个很奇怪的现象,定位功能可以实现,可就是与实际位置有偏差,但是此时你通过调试信息发现,定位的输出信息与实际位置基本吻合,而显示在地图上的却是另外一个地址,想知原因看下方...

    简述

    在android的百度地图开发中,有一个很奇怪的现象,定位功能可以实现,可就是与实际位置有偏差,但是此时你通过调试信息发现,定位的输出信息与实际位置基本吻合,而显示在地图上的却是另外一个地址,想知原因看下方。

    首先

    先理解坐标类型,不同的地图软件有自己的坐标表示方式,也有国际统一的标识方式,之所以出现上述现象,就是因为定位的坐标标志方式与显示的坐标表示方式不同。


    setCoorType:  设置返回值坐标类型  
             bd09ll  表示百度经纬度坐标,
             gcj02   表示经过国测局加密的坐标,
             wgs84   表示gps获取的坐标。

    下方代码是不是很熟悉,加上红色字体所示内容即可

    LocationClientOption option = new LocationClientOption();
            option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
            //可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
    
            option.setCoorType("bd09ll");
            //可选,默认gcj02,设置返回的定位结果坐标系,测试的时候发现这个最好不要注掉,不然定位不准确
    
            int span = 1000;
            option.setScanSpan(span);
            //可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的
    
            option.setIsNeedAddress(true);
            //可选,设置是否需要地址信息,默认不需要
    
            option.setOpenGps(true);
            //可选,默认false,设置是否使用gps
    
            option.setLocationNotify(true);
            //可选,默认false,设置是否当GPS有效时按照1S/1次频率输出GPS结果
    
            option.setIsNeedLocationDescribe(true);
            //可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”
    
            option.setIsNeedLocationPoiList(true);
            //可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
    
            option.setIgnoreKillProcess(false);
            //可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
    
            option.setNeedDeviceDirect(true);
            option.SetIgnoreCacheException(false);
            //可选,默认false,设置是否收集CRASH信息,默认收集
    
            option.setEnableSimulateGps(false);
            //可选,默认false,设置是否需要过滤GPS仿真结果,默认需要



    展开全文
  • 之前项目要用在线地图展示一些数据,...可是后来客户说定位不准,于是就开始了测试排查之路 经过测试发现地图缩放级别到最大的时候的定位展示是较为准确的,随着缩放级别的变小,标记的定位点也越来越跑偏了,这我.

    之前项目要用在线地图展示一些数据,无非就是加个mark或者加个点击mark展示infoWindow数据这些,按照官方文档比葫芦画瓢就做完了

    后来又要加个定位,找了找文档:https://lbs.qq.com/webApi/component/componentGuide/componentGeolocation 发现这个貌似可以,于是就加上了。可是后来客户说定位不准,于是就开始了测试排查之路

    经过测试发现地图缩放级别到最大的时候的定位展示是较为准确的,随着缩放级别的变小,标记的定位点也越来越跑偏了,这我怎么解决啊,这是人家的api啊,没办法,只能询问大佬了

    经过大佬的一顿排查,发现是vue项目中的text-align属性设置为center的缘故,于是将app.vue中的text-align去掉之后就准确了

    展开全文
  • 地图定位不准问题

    2015-07-29 18:26:36
    查了下资料苹果地图在大陆的数据源是高德的,查了下高德采用GCJ-02, 百度map sdk 采用的是BD-09,只好写了个类在发送和接收时做好转换,略微蛋疼。Github上有人写了一个现成的转换类,可以参考参考 传送门 ,其...

    同一个经纬度坐标在iOS端和Android端出现了比较大偏差。查了下资料苹果地图在大陆的数据源是高德的,查了下高德采用GCJ-02, 百度map sdk 采用的是BD-09,只好写了个类在发送和接收时做好转换,略微蛋疼。Github上有人写了一个现成的转换类,可以参考参考  传送门 ,其主要代码见下: 

    头文件:

    #import <Foundation/Foundation.h>
    #import <CoreLocation/CoreLocation.h>
    @interface JZLocationConverter : NSObject
    
    /**
     *	@brief	世界标准地理坐标(WGS-84) 转换成 中国国测局地理坐标(GCJ-02)<火星坐标>
     *
     *  ####只在中国大陆的范围的坐标有效,以外直接返回世界标准坐标
     *
     *	@param 	location 	世界标准地理坐标(WGS-84)
     *
     *	@return	中国国测局地理坐标(GCJ-02)<火星坐标>
     */
    + (CLLocationCoordinate2D)wgs84ToGcj02:(CLLocationCoordinate2D)location;
    
    
    /**
     *	@brief	中国国测局地理坐标(GCJ-02) 转换成 世界标准地理坐标(WGS-84)
     *
     *  ####此接口有1-2米左右的误差,需要精确定位情景慎用
     *
     *	@param 	location 	中国国测局地理坐标(GCJ-02)
     *
     *	@return	世界标准地理坐标(WGS-84)
     */
    + (CLLocationCoordinate2D)gcj02ToWgs84:(CLLocationCoordinate2D)location;
    
    
    /**
     *	@brief	世界标准地理坐标(WGS-84) 转换成 百度地理坐标(BD-09)
     *
     *	@param 	location 	世界标准地理坐标(WGS-84)
     *
     *	@return	百度地理坐标(BD-09)
     */
    + (CLLocationCoordinate2D)wgs84ToBd09:(CLLocationCoordinate2D)location;
    
    
    /**
     *	@brief	中国国测局地理坐标(GCJ-02)<火星坐标> 转换成 百度地理坐标(BD-09)
     *
     *	@param 	location 	中国国测局地理坐标(GCJ-02)<火星坐标>
     *
     *	@return	百度地理坐标(BD-09)
     */
    + (CLLocationCoordinate2D)gcj02ToBd09:(CLLocationCoordinate2D)location;
    
    
    /**
     *	@brief	百度地理坐标(BD-09) 转换成 中国国测局地理坐标(GCJ-02)<火星坐标>
     *
     *	@param 	location 	百度地理坐标(BD-09)
     *
     *	@return	中国国测局地理坐标(GCJ-02)<火星坐标>
     */
    + (CLLocationCoordinate2D)bd09ToGcj02:(CLLocationCoordinate2D)location;
    
    
    /**
     *	@brief	百度地理坐标(BD-09) 转换成 世界标准地理坐标(WGS-84)
     *
     *  ####此接口有1-2米左右的误差,需要精确定位情景慎用
     *
     *	@param 	location 	百度地理坐标(BD-09)
     *
     *	@return	世界标准地理坐标(WGS-84)
     */
    + (CLLocationCoordinate2D)bd09ToWgs84:(CLLocationCoordinate2D)location;
    
    
    @end

    实现文件

    #import "JZLocationConverter.h"
    #import <CoreLocation/CoreLocation.h>
    #define LAT_OFFSET_0(x,y) -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * sqrt(fabs(x))
    #define LAT_OFFSET_1 (20.0 * sin(6.0 * x * M_PI) + 20.0 * sin(2.0 * x * M_PI)) * 2.0 / 3.0
    #define LAT_OFFSET_2 (20.0 * sin(y * M_PI) + 40.0 * sin(y / 3.0 * M_PI)) * 2.0 / 3.0
    #define LAT_OFFSET_3 (160.0 * sin(y / 12.0 * M_PI) + 320 * sin(y * M_PI / 30.0)) * 2.0 / 3.0
    
    #define LON_OFFSET_0(x,y) 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * sqrt(fabs(x))
    #define LON_OFFSET_1 (20.0 * sin(6.0 * x * M_PI) + 20.0 * sin(2.0 * x * M_PI)) * 2.0 / 3.0
    #define LON_OFFSET_2 (20.0 * sin(x * M_PI) + 40.0 * sin(x / 3.0 * M_PI)) * 2.0 / 3.0
    #define LON_OFFSET_3 (150.0 * sin(x / 12.0 * M_PI) + 300.0 * sin(x / 30.0 * M_PI)) * 2.0 / 3.0
    
    #define RANGE_LON_MAX 137.8347
    #define RANGE_LON_MIN 72.004
    #define RANGE_LAT_MAX 55.8271
    #define RANGE_LAT_MIN 0.8293
    // jzA = 6378245.0, 1/f = 298.3
    // b = a * (1 - f)
    // ee = (a^2 - b^2) / a^2;
    #define jzA 6378245.0
    #define jzEE 0.00669342162296594323
    
    
    
    @implementation JZLocationConverter
    
    + (double)transformLat:(double)x bdLon:(double)y
    {
      double ret = LAT_OFFSET_0(x, y);
      ret += LAT_OFFSET_1;
      ret += LAT_OFFSET_2;
      ret += LAT_OFFSET_3;
      return ret;
    }
    
    + (double)transformLon:(double)x bdLon:(double)y
    {
      double ret = LON_OFFSET_0(x, y);
      ret += LON_OFFSET_1;
      ret += LON_OFFSET_2;
      ret += LON_OFFSET_3;
      return ret;
    }
    
    + (BOOL)outOfChina:(double)lat bdLon:(double)lon
    {
      if (lon < RANGE_LON_MIN || lon > RANGE_LON_MAX)
        return true;
      if (lat < RANGE_LAT_MIN || lat > RANGE_LAT_MAX)
        return true;
      return false;
    }
    
    + (CLLocationCoordinate2D)gcj02Encrypt:(double)ggLat bdLon:(double)ggLon
    {
      CLLocationCoordinate2D resPoint;
      double mgLat;
      double mgLon;
      if ([self outOfChina:ggLat bdLon:ggLon]) {
        resPoint.latitude = ggLat;
        resPoint.longitude = ggLon;
        return resPoint;
      }
      double dLat = [self transformLat:(ggLon - 105.0)bdLon:(ggLat - 35.0)];
      double dLon = [self transformLon:(ggLon - 105.0) bdLon:(ggLat - 35.0)];
      double radLat = ggLat / 180.0 * M_PI;
      double magic = sin(radLat);
      magic = 1 - jzEE * magic * magic;
      double sqrtMagic = sqrt(magic);
      dLat = (dLat * 180.0) / ((jzA * (1 - jzEE)) / (magic * sqrtMagic) * M_PI);
      dLon = (dLon * 180.0) / (jzA / sqrtMagic * cos(radLat) * M_PI);
      mgLat = ggLat + dLat;
      mgLon = ggLon + dLon;
      
      resPoint.latitude = mgLat;
      resPoint.longitude = mgLon;
      return resPoint;
    }
    
    + (CLLocationCoordinate2D)gcj02Decrypt:(double)gjLat gjLon:(double)gjLon {
      CLLocationCoordinate2D  gPt = [self gcj02Encrypt:gjLat bdLon:gjLon];
      double dLon = gPt.longitude - gjLon;
      double dLat = gPt.latitude - gjLat;
      CLLocationCoordinate2D pt;
      pt.latitude = gjLat - dLat;
      pt.longitude = gjLon - dLon;
      return pt;
    }
    
    + (CLLocationCoordinate2D)bd09Decrypt:(double)bdLat bdLon:(double)bdLon
    {
      CLLocationCoordinate2D gcjPt;
      double x = bdLon - 0.0065, y = bdLat - 0.006;
      double z = sqrt(x * x + y * y) - 0.00002 * sin(y * M_PI);
      double theta = atan2(y, x) - 0.000003 * cos(x * M_PI);
      gcjPt.longitude = z * cos(theta);
      gcjPt.latitude = z * sin(theta);
      return gcjPt;
    }
    
    +(CLLocationCoordinate2D)bd09Encrypt:(double)ggLat bdLon:(double)ggLon
    {
      CLLocationCoordinate2D bdPt;
      double x = ggLon, y = ggLat;
      double z = sqrt(x * x + y * y) + 0.00002 * sin(y * M_PI);
      double theta = atan2(y, x) + 0.000003 * cos(x * M_PI);
      bdPt.longitude = z * cos(theta) + 0.0065;
      bdPt.latitude = z * sin(theta) + 0.006;
      return bdPt;
    }
    
    
    + (CLLocationCoordinate2D)wgs84ToGcj02:(CLLocationCoordinate2D)location
    {
      return [self gcj02Encrypt:location.latitude bdLon:location.longitude];
    }
    
    + (CLLocationCoordinate2D)gcj02ToWgs84:(CLLocationCoordinate2D)location
    {
      return [self gcj02Decrypt:location.latitude gjLon:location.longitude];
    }
    
    
    + (CLLocationCoordinate2D)wgs84ToBd09:(CLLocationCoordinate2D)location
    {
      CLLocationCoordinate2D gcj02Pt = [self gcj02Encrypt:location.latitude
                              bdLon:location.longitude];
      return [self bd09Encrypt:gcj02Pt.latitude bdLon:gcj02Pt.longitude] ;
    }
    
    + (CLLocationCoordinate2D)gcj02ToBd09:(CLLocationCoordinate2D)location
    {
      return  [self bd09Encrypt:location.latitude bdLon:location.longitude];
    }
    
    + (CLLocationCoordinate2D)bd09ToGcj02:(CLLocationCoordinate2D)location
    {
      return [self bd09Decrypt:location.latitude bdLon:location.longitude];
    }
    
    + (CLLocationCoordinate2D)bd09ToWgs84:(CLLocationCoordinate2D)location
    {
      CLLocationCoordinate2D gcj02 = [self bd09ToGcj02:location];
      return [self gcj02Decrypt:gcj02.latitude gjLon:gcj02.longitude];
    }
    
    @end

    测试用例:

    CLLocationCoordinate2D gcj02 = CLLocationCoordinate2DMake(114.21892734521,29.575429778924);
      CLLocationCoordinate2D bd09 = [JZLocationConverter gcj02ToBd09:gcj02];
      NSLog(@"%f,%f", bd09.latitude, bd09.longitude); 
    
      // http://developer.baidu.com/map/index.php?title=webapi/guide/changeposition
      // JZLocationConverter 测试数据: 114.21892734521,29.575429778924  ; 转化结果: 114.224960,29.581853
      // 百度api  测试数据: 114.21892734521,29.575429778924  ; 百度api转换结果: 114.22539195429,29.581585367458

    总体来说,存在一点偏差,但跟处理前的效果比一下,相对可以接受了些。

    参考:

    http://blog.csdn.net/jiajiayouba/article/details/25140967

    http://developer.baidu.com/map/index.php?title=webapi/guide/changeposition 

    http://blog.csdn.net/winnyrain/article/details/22233559 

    http://www.kuaifenxiang.net/article/17 

    http://blog.csdn.net/coolypf/article/details/8569813 

    http://www.cppblog.com/socketref/archive/2011/06/29/149713.html


    原文:http://www.tuicool.com/articles/fMzYNrz

    展开全文
  • android 百度地图定位不准问题

    千次阅读 2020-01-08 17:40:25
    近日在学习Android开发时,《第一行代码》第十一章基于位置服务内容非常详尽,但是最后运行程序时发现实际位置与地图中标识位置存在较大误差,搜索发现因为使用的坐标偏移标准不同: WGS-84:是国际标准,GPS坐标...
  • 百度地图定位不准的一点心得

    千次阅读 2020-02-09 21:42:05
    关于android百度地图定位到几内亚湾或非洲的一点心得 这两天搞个定位搞得我是真的难受,小白太难了,所以就想分享一下,希望能帮到大家! 1、编译通过,打包apk,用真机运行,如果出现能定位(屏幕一片蓝或者只有...
  • uniapp h5 uni.getLocation地图定位不准

    千次阅读 2020-02-14 13:16:41
    只需要将type换成gcj02就可以了,wgs84 h5上定位不精确 uni.getLocation({ type: 'gcj02', altitude: true,
  • 最近在做Vue项目中定位时,发现定位总有偏差,查阅资料后发现用navigator.geolocation.getCurrentPosition取到的经纬度属于WGS84坐标,并不能直接用在百度地图的 构建map的point中,需要做转换。 转换前代码(贴上...
  • vue环境下使用百度地图定位发现,地图定位不准确,有偏差,带红叉的是我们赋值的没有转换坐标的定位,对号是我们转换了坐标以后的定位,相对来说转换的坐标是符合我们的定位要求的,为什么会出现这样的差别呢,那先...
  • APP调起地图导航出现偏差 是什么问题造成的呢 一:可能是模糊定位造成的 二:也有可能 改变了经纬度的数据 解决思路如下 先了解一下调起高德APP的各个参数是什么 百度地图 参数如下: 参数名称 描述 是否必选 ...
  • 地图经纬度定位不准

    2018-06-14 10:00:00
    在网上查阅各种获取当前经纬度方案,获得的经纬度差别都比较大...解决方案:查看muiH5中的地图实例:初始一个地图,再定位时,得到当前的经纬度准确性就高了 转载于:https://www.cnblogs.com/mangwusuozhi/p/9181668.html...
  • shoHello~又见面了!...有关报道称,位于四川的青城山景区错误导航问题一直存在,这其实也主要是因为高德地图接到的反馈来源不同,不过今年高德地图接到景区反馈后再次立马修正了停车场坐标。说到地图,...
  • 微信端H5使用百度地图定位获取当前位置安卓定位不准的问题解决如下: 使用微信端定位,签名方法看微信接口文档: <script type="text/javascript"> $.ajax({ type : "post", url : "../user/sign.vc",...
  • 百度地图浏览器API 获取GPS定位是根据调用浏览器核心获取GPS,部分手机型号定位不准,主要是因为部分手机采用的是GOOGLE GPS坐标格式、部分手机用的是原生坐标格式这两种格式百度地图无法判断,默认是按照原生坐标...
  • 关于app内嵌h5页面调用百度地图定位问题,为什么定位不准呢?以下为代码。 百度地图:里面有3种定位方式(a:浏览器定位,b:IP定位,c:定位SDK辅助定位),我选择第3种,是需要app那块添加些什么吗?用第一种或者第...
  • 百度地图-定位不准的问题

    千次阅读 2018-10-09 11:15:10
    情况描述:用百度定位做的打卡功能,用数据流量定位,华为小米手机能成功定位当前位置,换个品牌手机,定位位置偏差到旁边200m外的小区 资料参考  上面这段是百度官方文档里面的解释: 这个我 在做的时候基本是这种...
  • 百度地图api定位不准解决

    万次阅读 2013-03-28 16:48:54
    使用getpoint时有时会无法定位,没返回point.这时转用locationSearch即可,再无法定位,centerandzoom(city)吧. function initializeMap() { var... //向地图中添加缩略图控件 map.addControl(new BMap.NavigationCont
  • Android 百度地图集成问题(定位不准或定位在非洲)按官网的SDK集成的话基本没问题,但出现了定位一直在非洲的情况,其他权限一切正常,这是在manifest里缺了下面的这个服务的原因。代码: android:name=...
  • 随着智能手机功能的不断完善,越来越多的用户利用手机定位系统进行定位导航,在实际使用手机地图定位过程中,我们会发现实际位置与地图所显示位置不一致,这个大家应该深有体会。那么,手机地图定位为什么总有偏差?...
  • 在web上使用了百度地图webapi,发现第二次定位的时候仍然显示的是上一次定位的信息然而我在百度手机web版(就是map.baidu.com/mobile)重新授权定位后,发现回复的地址仍是以前定位的地址请问这是百度地图手机web版的...
  • 首先,我们先来了解一下手机定位方式,目前主流的手机定位方式可以分为三类:GPS定位、基站定位、混合定位。 GPS定位是通过手机中GPS模块获取位置信息,精度比较高、信息全面;不仅能获取经纬度,还能包括海拔高度...
  • 定位不准!!

    2019-04-24 10:33:34
    国内三大地图厂商转换api 以下为国内三大地图的坐标系转换api介绍: 腾讯地图坐标转换服务: lbs.qq.com/webservice_… 百度地图坐标转换服务: developer.baidu.com/map/wiki/in… 高德地图坐标转换服务: lbs.amap...
  • 小程序 定位不准

    2019-10-08 14:42:46
    positionClick: function() { console.log("查看地图"); if (!app.globalData.isPosition) { app.checkPositionShop(); } else { const la = Number(latitude); const l...
  • 以前知道不同的地图坐标不能直接通用,但是如我所知,Apple的地图也是基于高德的,为什么CLLocationManager定位出的不准确,而MKMapView的定位却是准确的呢? 原因: 是这样的,按照国家统一的保密要求,任何一个...
  • 如果高德和百度地图搞成这个鬼样子,估计会被骂死吧。 目前市面上智能安全帽定位技术的实现,主要依赖于GPS、北斗、WIFI、蓝牙等。像GPS和北斗等室外定位技术,虽然已经成熟且费用较低,但它们多用于室外较大区域...

空空如也

空空如也

1 2 3 4 5
收藏数 91
精华内容 36
关键字:

地图定位不准