当前位置: 首页 > 知识库问答 >
问题:

使用Google Maps API查找设备在Android中当前位置的经纬度值

子车芷阳
2023-03-14
@SuppressWarnings("MissingPermission")
    private LatLng getCurrentLocation() {
        LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
        String locationProvider = LocationManager.NETWORK_PROVIDER;
        assert locationManager != null;
        android.location.Location lastKnownLocation = locationManager.getLastKnownLocation(locationProvider);
        return new LatLng(lastKnownLocation.getLatitude(), lastKnownLocation.getLongitude());
    }

共有1个答案

秦飞航
2023-03-14

这段代码在我的一个项目中工作得很好:

public class LocationManager {
        private static LocationManager requestManager;
        private FusedLocationProviderClient mLocationProviderClient;
        private Location mLocation;
        private Location mMyCurrentLocation;
        private locationSuccessListener mListener;

    public Location getLocation() {
        return mLocation;
    }

    public void setLocation(Location location) {
        mLocation = location;
    }

    private LocationManager(FusedLocationProviderClient fusedLocationProviderClient) {
        this.mLocationProviderClient = fusedLocationProviderClient;
    }

    public static LocationManager createInstance(FusedLocationProviderClient fusedLocationProviderClient) {
        if (requestManager != null) {
            return requestManager;
        } else {
            return requestManager = new LocationManager(fusedLocationProviderClient);
        }
    }

    public static LocationManager getInstance() {
        return requestManager;
    }

    public void setLocation(Activity activity) {
        mListener = (locationSuccessListener) activity;
        LocationCallback callback = new LocationCallback();
        LocationRequest locationRequest = new LocationRequest();
        Task<Void> r = mLocationProviderClient.requestLocationUpdates(locationRequest, callback, Looper.getMainLooper());
        r.addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                mLocationProviderClient.getLastLocation().addOnSuccessListener(activity, new OnSuccessListener<Location>() {
                    @Override
                    public void onSuccess(Location location) {
                        mMyCurrentLocation = location;
                        mLocation = location;
                        if (location != null) {
                            mListener.onLocationReceived();
                            mLocationProviderClient.removeLocationUpdates(callback);
                        }
                    }
                });
            }
        });


    }

    public Location getMyCurrentLocation() {
        return mMyCurrentLocation;
    }


    public interface locationSuccessListener {
        void onLocationReceived();
    }

你需要做这样的事情:

public class PlacesActivity extends SingleFragmentActivity implements NavigationView.OnNavigationItemSelectedListener, LocationManager.locationSuccessListener

然后在你的活动中,你会得到这样的结果:

@Override
    public void onLocationReceived() {
         Location l = LocationManager.getInstance().getMyCurrentLocation();
             if (l==null){
                 Toast.makeText(this, "unable to get location", Toast.LENGTH_SHORT).show();
                 
             }
    }
if (ContextCompat.checkSelfPermission(Objects.requireNonNull(getActivity()), Manifest.permission.ACCESS_FINE_LOCATION)
                != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(getActivity(),
                    new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
                    0);
            
 类似资料:
  • 问题内容: 在我的应用程序中,我在打开应用程序时获得了当前位置的纬度和经度,但是在关闭应用程序时却没有得到。 我正在使用Service类在应用程序中获取当前位置的纬度和经度。 请告诉我即使关闭应用程序也如何获取当前位置的纬度和经度 问题答案: 几个月前,我创建了GPSTracker库来帮助我获取GPS位置。如果您需要查看GPSTracker> getLocation AndroidManifest

  • 本文向大家介绍Android获取当前位置的经纬度数据,包括了Android获取当前位置的经纬度数据的使用技巧和注意事项,需要的朋友参考一下 现在有这么一个需求:开启一个Service服务,获取当前位置的经纬度数据,将获取的数据以广播的方式发送出去,注册广播的Activity接收广播信息,并将接收到的数据在当前Activity显示,如果当前位置发生变化,经纬度数据改变,获取改变后的经纬度数据,通过H

  • 我有一个程序,其中位置的纬度和经度值存储在我下载的数据库中。 我想得到这些坐标和我当前位置之间的距离。 位置类有一个简单的方法来查找两个位置对象之间的距离,所以我想我应该用坐标创建一个位置对象,然后调用该方法。 有简单的方法吗?另外,如果有另一个可靠的、相当简单的等式,不会把事情弄得太乱,那也可以。谢谢。 (Android。位置。位置)

  • 我正在尝试检索我的地理位置的最新长使用一个谷歌API。此api接受蜂窝塔信息。尽管我提供了所有的信息,但在很长一段时间内,我都没有得到正确的信息。 https://developers.google.com/maps/documentation/geolocation/intro 有人用这个API找到lat long吗?GoogleGEO定位API的精确度有多高?

  • 我可以找到当前位置的经纬度,但是这些数据在改变我的当前位置之前是不显示的,我想在不改变我的位置的情况下得到当前位置的经纬度。 因为这段代码从onLocationChanged(Location loc)方法返回数据,所以在安装到我的设备上之后,如果不改变我的位置,我就无法获得数据。但是我需要纬度,经度,而不改变我的位置。这可能吗?请给出一个解决方案

  • 我正在尝试将Google Places API集成到我的应用程序中。现在我正在查找手机的当前位置,如何将获得的经度和纬度嵌入以下URL,而不是“location=34.0522222,-118.2427778” "https://maps.googleapis.com/maps/api/place/search/xml?location=34.0522222,-118.2427778