【发布时间】:2019-08-28 20:09:06
【问题描述】:
我希望能够打开和关闭 MyLocationNewOverlay。我当前的代码是:-
void btnTrack() {
btnTrack = (Button) findViewById(R.id.btnStart);
btnTrack.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String btnText = btnTrack.getText().toString();
GpsMyLocationProvider provider = new GpsMyLocationProvider(ctx);
provider.addLocationSource(LocationManager.NETWORK_PROVIDER);
// My Location Overlay
MyLocationNewOverlay mysLocationoverlay = new MyLocationNewOverlay(provider, map);
if (btnText.equalsIgnoreCase("Start")) {
/**************************************************************************
* Get and display the current location
**************************************************************************/
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
mysLocationoverlay.enableMyLocation(); // not on by default
mysLocationoverlay.setDirectionArrow(BitmapFactory.decodeResource(getResources(),
R.drawable.marker_node), BitmapFactory.decodeResource(getResources(), R.drawable.marker_poi_default));
mysLocationoverlay.runOnFirstFix(new Runnable() {
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
btnTrack.setText("CANCEL");
}
});
}
});
map.getOverlays().add(mysLocationoverlay);
}
else {
mysLocationoverlay.disableMyLocation();
mysLocationoverlay.disableFollowLocation();
map.getOverlays().remove(mysLocationoverlay);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
btnTrack.setText("START");
}
}
});
}
我很确定问题出在可运行对象上,但是当我将按钮切换到“取消”LED 时,我看不到任何终止它的方法。
我正在使用 osmdroid v6.1.0 和 osmbonuspack v6.6.0
如何停止可运行对象?
【问题讨论】:
-
runnable 应该不是问题。 Runnable by design 只运行一次。您也在使用 runOnFirstFix,因此应该没问题。我不确定问题到底出在哪里。尝试添加一些日志记录 (Log.d(...)) 和/或使用调试器查看代码是否正确执行。如果我不得不猜测,也许您需要在
map.getOverlays().remove(..)之后拨打map.invalidate()。 -
@Josef - 感谢您的快速回复。但是,添加 map.invalidate() 不起作用。我将 map.getOverlays().remove(...) 包装在几个 Log 语句中,似乎删除失败,大概是因为 locationOverlay 仍然处于活动状态。这听起来是否可能是原因,如果是,我该如何解决?
-
哦,现在我看到了问题所在。我会在一分钟内写一个适当的回复。
标签: runnable osmdroid osmbonuspack