Android 如何在每次有新车床时更新标记?
我每5秒更新一次LATLNG,我想在更新的LATLNG上更新标记。这是我的代码:Android 如何在每次有新车床时更新标记?,android,google-maps,location,real-time,Android,Google Maps,Location,Real Time,我每5秒更新一次LATLNG,我想在更新的LATLNG上更新标记。这是我的代码: private class LocationReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { lat = Double.valueOf(intent.getStringExtra("lat")); longD
private class LocationReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
lat = Double.valueOf(intent.getStringExtra("lat"));
longD = Double.valueOf(intent.getStringExtra("long"));
userLat = Double.valueOf(intent.getStringExtra("userLat"));
userLong = Double.valueOf(intent.getStringExtra("userLong"));
latDest = Double.valueOf(intent.getStringExtra("latDest"));
longDest = Double.valueOf(intent.getStringExtra("longDest"));
userDropLocation = intent.getStringExtra("userDropLocation");
userManualLocation = intent.getStringExtra("userLocation");
driverLatLng = new LatLng(lat, longD);
userLatlong = new LatLng(userLat, userLong);
dropLatlong = new LatLng(latDest, longDest);
Log.d("@@Latdriver", String.valueOf(lat));
Log.d("@@longDriver", String.valueOf(longD));
Log.d("@@latLngCurrent", String.valueOf(latLngCurrent));
Log.d("@@driverLatLng", String.valueOf(driverLatLng));
Log.d("@@userLat", String.valueOf(userLat));
Log.d("@@userLong", String.valueOf(userLong));
Log.d("@@userManualLocation", userManualLocation);
Log.d("@@userDropLocation", userDropLocation);
String urlToDrop = getDirectionsUrl(driverLatLng, dropLatlong);
DownloadTask downloadTask1 = new DownloadTask();
downloadTask1.execute(urlToDrop);
map.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory.fromResource(R.drawable.pin_green))
.position(new LatLng(latDest,longDest )));
MarkerOptions a = new MarkerOptions()
.position(driverLatLng);
Marker m = map.addMarker(a);
m.setPosition(driverLatLng);
LatLngBounds.Builder builder = new LatLngBounds.Builder();
builder.include(driverLatLng);
LatLngBounds bounds = builder.build();
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, 150);
map.animateCamera(cu);
}
}
在上面的代码中,每次添加新标记时都会更新,如何解决此问题请帮助我,提前谢谢你,我将非常感谢这里的每个答案每5秒一次都太频繁了。它会像任何东西一样耗尽用户的电池。30-60秒就可以了 问题就在这里
MarkerOptions a = new MarkerOptions()
.position(driverLatLng);
Marker m = map.addMarker(a);
m.setPosition(driverLatLng);
您每次都在创建新的标记
将字段变量用于标记。第一次初始化它。从下一次开始,只需将标记的位置设置为新的lat lng
您的代码应该是这样的
private Marker driverMarker ;
// inside broad cast receiver
if(null==driverMarke){
MarkerOptions a = new MarkerOptions()
.position(driverLatLng);
driverMarker = map.addMarker(a);
}
driverMarker.setPosition(driverLatLng);
让我在一个空对象引用上尝试一下oneMarker.setPositioncom.google.android.gms.maps.model.LatLng'将其更改为ifnull=driverMarke to ifnull==DriverMarkes每次创建新标记时我都会检查,当您获得新的latlng时,您可以创建全局标记并设置其在获得新latlng的位置。