Android - Удаление маркеров при смене разных карт - PullRequest
0 голосов
/ 15 ноября 2018

Я создал приложение, которое отображает различные треки в парке.Я создал два маркера, которые представляют начало и конец трека.У меня возникает проблема, когда при смене дорожек маркер с предыдущей дорожки все еще отображается.Я пытался map.clear(), но это все удалило.Я не хочу показывать маркеры из предыдущего трека.

private void createMarker(double latitude, double longitude, String title) {
    map.addMarker(new MarkerOptions()
            .position(new LatLng(latitude, longitude))
            .title(title)
            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW)));
}

private void updateMapTrack() {
    switch (options.getTrack()) {
        case TRACK1:
            createMarker(-45.85696303760779, 170.5199563062967, "Start of track1.");
            createMarker(-45.85808344124618, 170.5247490755895, "End of track1.");
            map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(-45.856895, 170.518673), (float) 17.8));
            break;

        case TRACK2:
            createMarker(-45.85696303760779, 170.5199563062967, "Start of track2.");
            createMarker(-45.85808344124618, 170.5247490755895, "End of track2.");
            map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(-45.857144, 170.522713), (float) 16.32));
            break;

        case TRACK3:
            createMarker(-45.85714008365828, 170.5193834664067, "Start of track3.");
            createMarker(-45.85751258570694, 170.526808129631, "End of track3.");
            map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(-45.858164, 170.523111), (float) 16));
            break;
    }
}

1 Ответ

0 голосов
/ 15 ноября 2018

Вам нужно будет сохранить ссылку на созданный вами объект Marker, а затем вызвать метод

[Marker Reference].remove(), чтобы удалить его из GoogleMap.Например:

Создайте маркер, подобный этому, и сохраните ссылку:

Marker startTrackMarker = createMarker(-45.85696303760779, 170.5199563062967, "Start of track1.");

И вот как вы удалите:

startTrackMarker.remove()

И ваш createMarker метод будет изменен следующим образом:

private Marker createMarker(double latitude, double longitude, String title) {
        return map.addMarker(new MarkerOptions()
                .position(new LatLng(latitude, longitude))
                .title(title)
                .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW)));
    }

Примечание:

Если у вас естьнесколько маркеров, тогда вам понадобится массив для хранения всех ссылок на рынки, например:

ArrayList<Marker> markers = new ArrayList<>();

, а затем для удаления этих маркеров вам придется выполнить итерацию массива и вызвать remove() для каждого объекта маркера,(В противном случае все зависит от вашей логики).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...