Google Maps api v2 android:如何删除单个标记?
Google Maps api v2 android: How to Remove a single marker?
在我的应用程序中,我需要有两种类型的标记:第一种需要留在某个位置,第二种需要移动,现在我还没有静态标记,但我的应用程序可以显示标记如果 phone 的位置发生变化但我调用 mMap.clear() 时移动,我不想在位置发生变化时清除所有标记所以我只需要删除那个标记,我在另一个问题中读到我需要使用 Marker.remove();删除单个标记,但我不确定在代码中的何处实现它。
这是新位置的方法:
public void onLocationChanged(Location location) {
mMap.clear();
GetLatLong();
handleNewLocation(location);
mCurrentLocation = location;
}
这里是 handleNewLocation 方法:
private void handleNewLocation(Location location) {
if (mLastLocation != null) {
LatLng latLng = new LatLng(list.get(0), list.get(1));
//mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
//añadir un nuevo marker con la posición de la variable latLng
MarkerOptions camion = new MarkerOptions()
.position(latLng)
.title("Camión")
.snippet("ruta " + ruta)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.bus));
Marker marker = mMap.addMarker(camion);
if (marker == null) {
mMap.addMarker(camion);
} else {
camion.position(latLng);
}
}
}
谢谢。
编辑:
List<Marker> markers = new ArrayList<Marker>();
@Override
public void onLocationChanged(Location location) {
markers.clear();
GetLatLong();
handleNewLocation(location);
mCurrentLocation = location;
}
private void handleNewLocation(Location location) {
if (mLastLocation != null) {
LatLng latLng = new LatLng(list.get(0), list.get(1));
//mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
//añadir un nuevo marker con la posición de la variable latLng
MarkerOptions camion = new MarkerOptions()
.position(latLng)
.title("Camión")
.snippet("ruta " + ruta)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.bus));
Marker marker = mMap.addMarker(camion);
if (marker == null) {
markers.add(marker);
} else {
camion.position(latLng);
}
}
}
}
正如我上面所讨论的,您可以尝试将 what-you-want-remove marker
保存在 ArrayList
或 HashMap
.
中
示例代码:
// before loop:
List<Marker> markers = new ArrayList<Marker>();
// inside your loop:
Marker marker = myMap.addMarker(new MarkerOptions().position(new LatLng(geo1Dub,geo2Dub))); //...
markers.add(marker);
// after loop:
markers.size();
如果你想删除一个标记 - 你必须先记住这个标记。然后调用 marker.remove().
代码:
class YourClass {
Marker singleMarker; //marker to be removed
public void addMarker() {
....
//here you add your marker
singleMarker = mMap.addMarker(camion);
}
public void removeSingleMarker() {
if(singleMarker != null) {
singleMarker.remove();
singleMarker = null;
}
}
}
在我的应用程序中,我需要有两种类型的标记:第一种需要留在某个位置,第二种需要移动,现在我还没有静态标记,但我的应用程序可以显示标记如果 phone 的位置发生变化但我调用 mMap.clear() 时移动,我不想在位置发生变化时清除所有标记所以我只需要删除那个标记,我在另一个问题中读到我需要使用 Marker.remove();删除单个标记,但我不确定在代码中的何处实现它。
这是新位置的方法:
public void onLocationChanged(Location location) {
mMap.clear();
GetLatLong();
handleNewLocation(location);
mCurrentLocation = location;
}
这里是 handleNewLocation 方法:
private void handleNewLocation(Location location) {
if (mLastLocation != null) {
LatLng latLng = new LatLng(list.get(0), list.get(1));
//mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
//añadir un nuevo marker con la posición de la variable latLng
MarkerOptions camion = new MarkerOptions()
.position(latLng)
.title("Camión")
.snippet("ruta " + ruta)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.bus));
Marker marker = mMap.addMarker(camion);
if (marker == null) {
mMap.addMarker(camion);
} else {
camion.position(latLng);
}
}
}
谢谢。
编辑:
List<Marker> markers = new ArrayList<Marker>();
@Override
public void onLocationChanged(Location location) {
markers.clear();
GetLatLong();
handleNewLocation(location);
mCurrentLocation = location;
}
private void handleNewLocation(Location location) {
if (mLastLocation != null) {
LatLng latLng = new LatLng(list.get(0), list.get(1));
//mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
//añadir un nuevo marker con la posición de la variable latLng
MarkerOptions camion = new MarkerOptions()
.position(latLng)
.title("Camión")
.snippet("ruta " + ruta)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.bus));
Marker marker = mMap.addMarker(camion);
if (marker == null) {
markers.add(marker);
} else {
camion.position(latLng);
}
}
}
}
正如我上面所讨论的,您可以尝试将 what-you-want-remove marker
保存在 ArrayList
或 HashMap
.
示例代码:
// before loop:
List<Marker> markers = new ArrayList<Marker>();
// inside your loop:
Marker marker = myMap.addMarker(new MarkerOptions().position(new LatLng(geo1Dub,geo2Dub))); //...
markers.add(marker);
// after loop:
markers.size();
如果你想删除一个标记 - 你必须先记住这个标记。然后调用 marker.remove().
代码:
class YourClass {
Marker singleMarker; //marker to be removed
public void addMarker() {
....
//here you add your marker
singleMarker = mMap.addMarker(camion);
}
public void removeSingleMarker() {
if(singleMarker != null) {
singleMarker.remove();
singleMarker = null;
}
}
}