我正在开发一款使用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中的值没有,并且从最后一个位置而不是当前位置绘制了该线。
谢谢。
答案 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)
)并根据相应回调中传递给您的当前位置执行任何操作(提供)通过实现该接口)。