我希望能够打开和关闭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");
}
}
});
}
我很确定问题是可运行的,但是当我将按钮切换到“取消”按钮时,我看不到任何终止它的方法。
我正在使用osmdroid v6.1.0和osmbonuspack v6.6.0
如何停止可运行文件?
答案 0 :(得分:1)
每次单击按钮时,您将创建MyLocationNewOverlay的本地实例。
首次单击该按钮时,将创建,激活MyLocationNewOverlay实例并将其添加到地图视图中。
第二次单击该按钮时,将创建另一个新的MyLocationOverlay实例。该新实例已停用,并从地图视图中删除-很好,不是真的,因为它从未被激活或添加。
我建议在您的活动中保留对MyLocationOverlay实例的引用(或断断续续,视情况而定),并仅在第一次单击按钮时创建它(检查是否为空)。