iOS system location

作者: 追沐 | 来源:发表于2017-11-08 15:14 被阅读14次

    iOS system location

    1,WiFi定位,通过查询一个WiFi路由器的地理位置的信息,比较省电;iPhone,Ipod touch 和iPad都可以。

    2,蜂窝式移动电话基站定位,通过移动运营商基站定位,只有iPhone,3G版本的iPod touch和iPad可以采用。

    3,GPS卫星定位,通过3~4颗GPS卫星位置定位,最为准确,但是耗电量大,不能遮挡,iPhone,iPod touch和iPad都可以采用。

    iOS不像android系统在定位服务编程时可以指定采用哪种途径进行定位。iOS的API把底层这些细节屏蔽掉了,开发人员和用户并不知道现在设备采用哪种方式进行定位,iOS系统会根据设备的情况和周围的环境,采用一太最佳的解决方案。这个方案是这样的:如果能够接收GPS信息,那么设备优先采用GPS定位,否则采用WiFi或蜂窝基站定位,在WiFi和蜂窝基站之间优先使用WiFi,如果无法连接WiFi才使用蜂窝基站定位。

    一、结论

    iOS系统的定位不能指定使用哪种定位类型,第三方sdk是在系统定位的基础上获取系统定位的结果。苹果为了保护用户隐私和定位接口Api的简化高效,采用混合定位,不向外提供具体的定位类型,只提供最终数据。

    二、定位

    GPS定位

    优点:精度最高,信息全,可获取到经纬度、海拔高度、方向角等。

    缺点:在室内、高架桥下等GPS信号弱的地方定位就会出现偏差。

    基站定位

    略...

    WiFi定位

    略...

    三、iOS系统定位

    iOS系统的而定位综合了基站、GPS和WiFi定位。

    iOS的地图定位SDK不支持对于基站、GPS或者WiFi定位的设置。目的是为了保护用户隐私、综合提高定位精确度。

    四、高德定位

    高德、百度等在iOS中定位的SDK都是基于iOS系统定位封装的产物,由于受到iOS系统定位的限制,只能读取到iOS系统定位的结果,而不能区分是GPS定位还是基站定位等具体的某中定位方式。

    高德定位SDK通过GPS+基站定位+WiFi的混合定位模式进行定位。

    高德地图SDK不支持对定位类型的设置,只能设置定位精度。

    • 高德定位有如下设置:

    设置最小定位距离,使得司机位置不发生明显变化时不定位,可以一定程度上缓解司机位置不动时定位漂移问题。

    ///设定定位的最小更新距离。单位米,默认为 kCLDistanceFilterNone,表示只要检测到设备位置发生变化就会更新位置信息。
    @property(nonatomic, assign) CLLocationDistance distanceFilter;
    

    设置定位精度为最高。

    ///设定期望的定位精度。单位米,默认为 kCLLocationAccuracyBest。定位服务会尽可能去获取满足desiredAccuracy的定位结果,但不保证一定会得到满足期望的结果。 \n注意:设置为kCLLocationAccuracyBest或kCLLocationAccuracyBestForNavigation时,单次定位会在达到locationTimeout设定的时间后,将时间内获取到的最高精度的定位结果返回。
    @property(nonatomic, assign) CLLocationAccuracy desiredAccuracy;
    

    五、最后

    通过坐标点的抽稀、去噪等可以将偏差较大的点过滤掉。

    相关文章

      网友评论

        本文标题:iOS system location

        本文链接:https://www.haomeiwen.com/subject/cjqymxtx.html