我创建了一个在公园中显示不同轨道的应用。我创建了两个标记,分别代表曲目的开始和结束。我遇到一个问题,当我更改曲目时,仍显示前一曲目的标记。我尝试了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;
}
}
答案 0 :(得分:0)
您将必须保留对创建的标记对象的引用,然后调用
[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()
。 (否则,这完全取决于您的逻辑)。