Определение местоположения по клику на кнопку. Yandex MapKit Android
После загрузки активити с картой, необходимо один раз определить местоположение пользователя и больше его не обновлять. Также будет кнопка, по нажатию на которую местоположение должно обновляться (так же один раз). На данный момент реализовано постоянно определение и обновление местоположения после загрузки активити с картой:
public class MapMes extends AppCompatActivity implements UserLocationObjectListener, UserLocationTapListener {
private final Point TARGET_LOCATION = new Point(54.513124, 36.259639);
private MapView mapView;
private UserLocationLayer userLocationLayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String MAPKIT_API_KEY = "ключ";
MapKitFactory.setApiKey(MAPKIT_API_KEY);
MapKitFactory.initialize(this);
setContentView(R.layout.map_mes);
mapView = (MapView) findViewById(R.id.mapview);
mapView.getMap().move(
new CameraPosition(TARGET_LOCATION, 15.0f, 0.0f, 0.0f),
new Animation(Animation.Type.SMOOTH, 0),
null);
MapKit mapKit = MapKitFactory.getInstance();
userLocationLayer = mapKit.createUserLocationLayer(mapView.getMapWindow());
userLocationLayer.setVisible(true);
userLocationLayer.setHeadingEnabled(true);
userLocationLayer.setObjectListener(this);
}
@Override
protected void onStop() {
super.onStop();
mapView.onStop();
MapKitFactory.getInstance().onStop();
}
@Override
protected void onStart() {
super.onStart();
mapView.onStart();
MapKitFactory.getInstance().onStart();
}
@Override
public void onObjectAdded(UserLocationView userLocationView) {
userLocationLayer.setAnchor(
new PointF((float)(mapView.getWidth() * 0.5), (float)(mapView.getHeight() * 0.5)),
new PointF((float)(mapView.getWidth() * 0.5), (float)(mapView.getHeight() * 0.83)));
userLocationView.getArrow().setIcon(ImageProvider.fromResource(
this, R.drawable.my_geo_icon));
userLocationView.getAccuracyCircle().setFillColor(Color.TRANSPARENT);
}
@Override
public void onObjectRemoved(UserLocationView view) {
}
@Override
public void onObjectUpdated(UserLocationView view, ObjectEvent event) {
}
@Override
public void onUserLocationObjectTap(@NonNull Point point){
}
}
Подскажите, как доработать, чтобы реализовать тот функционал, который мне нужен.