获取经纬度方法的使用以及常见问题

本文介绍了在Android中获取经纬度的配置方法,包括需要在xml文件中添加的权限,如ACCESS_COARSE_LOCATION、INTERNET和ACCESS_FINE_LOCATION。同时提到返回的经纬度是以字符串形式,格式为'Latitude + "-" + Longitude'。当LocationManager.getLastKnownLocation返回null时,开发者可参考提供的StackOverflow链接进行问题排查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常用方法:

xml文件的配置

  1. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />  
  2. <uses-permission android:name="android.permission.INTERNET" />  
  3. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />  

这个方法返回值是经纬度的组合字符串  组合格式Latitude + "-" + Longitude;,如有需要可以自行修改

private String getLocal() {

        locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
        //获取所有可用的位置提供器
        List<String> providers = locationManager.getProviders(true);
        if (providers.contains(LocationManager.GPS_PROVIDER)) {
            //如果是GPS
            locationProvider = LocationManager.GPS_PROVIDER;
        } else if (providers.contains(LocationManager.NETWORK_PROVIDER)) {
            //如果是Network
            locationProvider = LocationManager.NETWORK_PROVIDER;
        } else {
            Toast.makeText(view.getContext(), "没有可用的位置提供器", Toast.LENGTH_SHORT).show();
            return "null";
        }
        //获取Location
        if (ActivityCompat.checkSelfPermission(view.getContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(view.getContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            return "未获取权限";
        }
        //不是一次就能成功的
        locl = locationManager.getLastKnownLocation(locationProvider);
        if(locl!=null){
            //不为空,显示地理位置经纬度
            locationManager.requestLocationUpdates("gps", 60000, 1, locationListener);
            Latitude = locl.getLatitude();
            Longitude = locl.getLongitude();
        }
        //监视地理位置变化
        locationManager.requestLocationUpdates(locationProvider, 3000, 1, locationListener);
        locationstr = Latitude + "-" + Longitude;
        return locationstr;
    }


然后开始码的时候发现每次第一次总是获取不到地理位置,返回值都是null-null,分析后得知原因是getLastKnownLocation这个方法用一次往往不能成功,所以在判断不为空的时候反复获取,即加上下面一句话
locationManager.requestLocationUpdates("gps", 60000, 1, locationListener);
这是从国外论坛上得到的启发

具体可见  http://stackoverflow.com/questions/1608632/android-locationmanager-getlastknownlocation-returns-null

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值