无法在Android中获取新的GPS位置

时间:2013-04-06 13:56:00

标签: android android-maps-v2

我正在开发一款使用Google Map V2和GPS的应用。代码显示了一个部分,它获取用户位置的纬度和经度。

map.setMyLocationEnabled(true); //Locate the user's current location

LocationManager service = (LocationManager) getSystemService(LOCATION_SERVICE);
Criteria crit = new Criteria();
String provider = service.getBestProvider(criteria, false);
Location location = service.getLastKnownLocation(provider);
LatLng locationOfUser = new LatLng(location.getLatitude(),location.getLongitude());

应用程序基本上使用locationOfUser中的值,并可以在用户选择的标记处绘制一条线。然而,当我从不同的位置尝试应用时,蓝色标记指示用户的当前位置发生了变化但是locationOfUser中的值没有,并且从最后一个位置而不是当前位置绘制了该线。

谢谢。

2 个答案:

答案 0 :(得分:1)

您需要requestLocationUpdate

service.requestLocationUpdates(provider, updateInterval, updateDistance, new LocationListener()
    {

        @Override
        public void onStatusChanged(String provider, int status, Bundle extras)
        {

        }

        @Override
        public void onProviderEnabled(String provider)
        {

        }

        @Override
        public void onProviderDisabled(String provider)
        {

        }

        @Override
        public void onLocationChanged(Location location)
        {
            LatLng locationOfUser = new LatLng(location.getLatitude(),location.getLongitude()); 
        }
    });  

其中updateInterval是所需的mim时间间隔,updateDistance是所需的最小距离间隔。例如,您可以设置updateInterval = 1000和updateDistance = 1。

答案 1 :(得分:0)

现在LocationManager接口已添加到API,无需手动请求OnMyLocationChangeListener的位置更新。

您只需启用my-location图层(map.setMyLocationEnabled(true)),设置监听器(map.setOnMyLocationChangeListener(this))并根据相应回调中传递给您的当前位置执行任何操作(提供)通过实现该接口)。