我想以 1 分钟的间隔获取更新的位置,以便我将标记放在地图上,同时这样另一个应用程序可以在我移动时看到我的当前位置。
因此,这里是我的代码,但痛心地说,即使代码已经在里面不会更新位置onLocationChanged
的方法。但我不确定我的代码是否正确。
@Override
public void onLocationChanged(Location location) {
mLastLocation = location;
if (mCurrLocationMarker != null) {
mCurrLocationMarker.remove();
}
latlng = new LatLng(location.getLatitude(), location.getLongitude());
lat = String.valueOf(location.getLatitude());
lLong = String.valueOf(location.getLongitude());
driverID = pref.getString("driverID", "");
final Query userName = ref.orderByChild("username").equalTo(username);
userName.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapShot : dataSnapshot.getChildren()) {
if (!snapShot.child("latitude").equals(lat) || !snapShot.child("longitude").equals(lLong)) {
snapShot.getRef().child("latitude").setValue(lat);
snapShot.getRef().child("longitude").setValue(lLong);
snapShot.getRef().child("currentLocation").setValue(strOrigin);
Toast.makeText(MapsActivity.this, "old lat: " + snapShot.child("latitude").getValue().toString() + "\nnew lat: " + lat +
"\nold long: " + snapShot.child("longitude").getValue().toString() + "\nnew long: " + lLong, Toast.LENGTH_LONG).show();
}
}
markerOptions = new MarkerOptions();
markerOptions.position(latlng);
markerOptions.title("Current Location");
markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA));
mCurrLocationMarker = mMap.addMarker(markerOptions);
//move map camera
mMap.moveCamera(CameraUpdateFactory.newLatLng(latlng));
mMap.animateCamera(CameraUpdateFactory.zoomTo(11));
}
@Override
public void onCancelled(FirebaseError firebaseError) {
Toast.makeText(MapsActivity.this, "on cancelled child latlng: " + firebaseError.getMessage(), Toast.LENGTH_SHORT).show();
}
});
Geocoder geocoder;
List<android.location.Address> addresses;
geocoder = new Geocoder(this, Locale.getDefault());
StringBuilder result = new StringBuilder();
try {
addresses = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
if (addresses.size() > 0) {
Address address = addresses.get(0);
result.append(address.getAddressLine(0)).append(", ");
result.append(address.getLocality()).append(", ");
result.append(address.getCountryName());
}
strOrigin = result.toString();
Toast.makeText(MapsActivity.this, "origin" + strOrigin, Toast.LENGTH_SHORT).show();
// onSendOrigin(r);
} catch (IOException e) {
e.printStackTrace();
}
//stop location updates
if (mGoogleApiClient != null) {
LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);
}\
}
看起来你在打电话:
LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);
在 onLocationChanged 方法中。这将在第一次调用 onLocationChanged 后立即停止位置更新。
尝试删除该行,看看它是否有效。您应该只在使用完位置服务或应用程序暂停/停止时调用 removeLocationUpdates
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句