问题
- How to create instance of Marker class, but without adding it to the map.
回答1:
You may use LazyMarker.java from Android Maps Extensions.
It doesn't physically create marker until you call setVisible(true)
on it.
回答2:
You can do this by setting the visibility
to false
Marker marker = mMap.addMarker(new MarkerOptions()
.position(
new LatLng(arg0.latitude,
arg0.longitude))
.draggable(true).visible(false));
Edit
Marker m = new Marker(new z() {
@Override
public IBinder asBinder() {
return null;
}
@Override
public void showInfoWindow() throws RemoteException {
}
@Override
public void setVisible(boolean paramBoolean)
throws RemoteException {
}
@Override
public void setTitle(String paramString)
throws RemoteException {
}
@Override
public void setSnippet(String paramString)
throws RemoteException {
}
@Override
public void setPosition(LatLng paramLatLng)
throws RemoteException {
}
@Override
public void setDraggable(boolean paramBoolean)
throws RemoteException {
}
@Override
public void remove() throws RemoteException {
}
@Override
public boolean isVisible() throws RemoteException {
return false;
}
@Override
public boolean isInfoWindowShown() throws RemoteException {
return false;
}
@Override
public boolean isDraggable() throws RemoteException {
return false;
}
@Override
public void hideInfoWindow() throws RemoteException {
}
@Override
public int hashCodeRemote() throws RemoteException {
return 0;
}
@Override
public String getTitle() throws RemoteException {
return null;
}
@Override
public String getSnippet() throws RemoteException {
return null;
}
@Override
public LatLng getPosition() throws RemoteException {
return null;
}
@Override
public String getId() throws RemoteException {
return null;
}
@Override
public boolean g(z paramz) throws RemoteException {
return false;
}
});
And then adding it when you want like this
mMap.addMarker(new MarkerOptions().position((m.getPosition())));
Hope it helps
来源:https://stackoverflow.com/questions/16481359/create-a-marker-without-adding-it-to-the-map