安卓定位及坐标转换

本文介绍了安卓设备的定位权限和方法,包括LocationManager、Google Maps API、高德地图API和百度地图API的使用。同时详细讲解了不同坐标系统间的转换,如gcj02到bd09、bd09到gcj02、wgs84到gcj02等,并提供了转换工具和相关SDK链接。最后分享了安卓开发资源和开源库。
摘要由CSDN通过智能技术生成

博客: 安卓之家
微博: 追风917
CSDN: 蒋朋的家
简书: 追风917

每日一景

定位


需要添加位置权限,这里有两个:

  • android.permission.ACCESS_COARSE_LOCATION – 允许 API 利用 WiFi 或移动蜂窝数据(或同时利用两者)来确定设备位置。API 返回的位置精确度大约相当于城市街区。
  • android.permission.ACCESS_FINE_LOCATION – 允许 API 利用包括全球定位系统 (GPS) 在内的可用位置提供商以及 WiFi 和移动蜂窝数据尽可能精确地确定位置。

下面介绍几种获取的方法:

1 安卓 SDK android.location.LocationManager

单独获取位置信息还是很简单的:

    LocationManager mManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
            != PackageManager.PERMISSION_GRANTED
            && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
            != PackageManager.PERMISSION_GRANTED) {
        return;
    }
    Location mLocation = mManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);//需要权限检测,上面添加

    double mLat = location.getLatitude();//获取纬度
    double mLng = location.getLongitude();//获取经度

实际开发中,我们需要实时定位,就需要监听位置变化来实现,

声明 LocationListener,然后调用 requestLocationUpdates 方法即可:

    /**
     * 获取原生gps信息,代码放 MainActivity 里就可以
     */
    public void getGPSInfo() {
        LocationManager mManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
                != PackageManager.PERMISSION_GRANTED
                && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
                != PackageManager.PERMISSION_GRANTED) {
            return;
        }
        Location mLocation = mManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

        updateGPSInfo(mLocation);

        mManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 8, new LocationListener() {
            @Override
            public void onLocationChanged(Location location) {
                updateGPSInfo(mLocation);//位置变化时,更新位置信息
            }

            @Override
            public void onStatusChanged(S
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值