我目前正在创建一个Android地图应用程序,我想让用户能够跟踪自己的路线。因此,基本上他们将按下一个开始按钮,然后将检测他们的当前位置,并且当他们开始行走时,将动态绘制折线。
目前我尚未绘制折线,但我可以使用模拟位置继续检测更新的当前位置。但是要获得更新,我必须一直按下开始按钮。有没有办法让标记自己出现,而我不必手动按下开始按钮?
这是我的代码
btn点击
开始 btnStart = (Button) findViewById(R.id.btnStart);
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// getting current location
MyLocationListener myLocListener = new MyLocationListener();
LocationManager locManager;
String context = Context.LOCATION_SERVICE;
locManager = (LocationManager) getSystemService(context);
Criteria c = new Criteria();
c.setAccuracy(Criteria.ACCURACY_FINE);
c.setAltitudeRequired(false);
c.setBearingRequired(false);
c.setCostAllowed(true);
c.setPowerRequirement(Criteria.POWER_LOW);
String provider = locManager.getBestProvider(c, true);
Location loc = locManager.getLastKnownLocation(provider);
locManager.requestLocationUpdates(provider, 50, 10, myLocListener);
LatLng currentPosition = updateWithNewLocation(loc);
// getting current location - end
// setting a marker at the curretnt location (start of polyline)
Marker startLocation = mMap.addMarker(new MarkerOptions()
.position(currentPosition)
.title("Start Location")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)));
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentPosition, 17));
}
});
updateWithNewLocation方法
private LatLng updateWithNewLocation(Location loc) {
String latLonString;
LatLng currentLocation = null;
if (loc != null) {
double lat = loc.getLatitude();
double lon = loc.getLongitude();
currentLocation = new LatLng(lat, lon);
} else {
latLonString = "No location found";
}
return currentLocation;
}
最后但并非最不重要的是,我的 LocationListener
private final LocationListener locListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
updateWithNewLocation(location);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
};
答案 0 :(得分:0)
你能在下面试试吗?
locManager.requestLocationUpdates(provider, 50, 10, myLocListener);
到
locManager.requestLocationUpdates(provider, 0, 0, myLocListener);
因为位置管理器要求 50米至更新位置本身。
有关Location Manager的更多详情。
希望它会对你有所帮助。