1

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

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 中的值没有,并且从最后一个位置而不是当前位置绘制线。

谢谢你。

4

2 回答 2

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是期望的最小距离间隔并且updateDistance是期望的最小距离间隔。例如,您可以设置 updateInterval = 1000 和 updateDistance = 1。

于 2013-04-06T14:38:16.190 回答
0

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

您只需要启用 my-location 层 ( map.setMyLocationEnabled(true))、设置侦听器 ( map.setOnMyLocationChangeListener(this)) 并使用在相应回调中传回给您的当前位置(通过实现该接口提供)做任何您想做的事情。

于 2013-04-25T21:47:37.227 回答