發現,繼承是可能的,here's一個可能的解決方案:
包含一個標籤(或您想任何其他添加到它)您的自定義標記:
public class UrlMarker extends Marker {
private String tag;
public UrlMarker(BaseMarkerOptions baseMarkerOptions, String tag) {
super(baseMarkerOptions);
this.tag = tag;
}
public String getTag() {
return tag;
}
}
以及自定義BaseMarkerOptions類:
public class UrlMarkerOptions extends BaseMarkerOptions<UrlMarker, UrlMarkerOptions> {
private String tag;
public UrlMarkerOptions tag(String name) {
tag = name;
return getThis();
}
public UrlMarkerOptions() {
}
private UrlMarkerOptions(Parcel in) {
position((LatLng) in.readParcelable(LatLng.class.getClassLoader()));
snippet(in.readString());
String iconId = in.readString();
Bitmap iconBitmap = in.readParcelable(Bitmap.class.getClassLoader());
Icon icon = IconFactory.recreate(iconId, iconBitmap);
icon(icon);
tag(in.readString());
}
@Override
public UrlMarkerOptions getThis() {
return this;
}
@Override
public UrlMarker getMarker() {
return new UrlMarker(this, tag);
}
public static final Parcelable.Creator<UrlMarkerOptions> CREATOR
= new Parcelable.Creator<UrlMarkerOptions>() {
public UrlMarkerOptions createFromParcel(Parcel in) {
return new UrlMarkerOptions(in);
}
public UrlMarkerOptions[] newArray(int size) {
return new UrlMarkerOptions[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeParcelable(position, flags);
out.writeString(snippet);
out.writeString(icon.getId());
out.writeParcelable(icon.getBitmap(), flags);
out.writeString(tag);
}
}
如何使用:
UrlMarkerOptions myMarker = new UrlMarkerOptions("object-id");
mapboxMap.addMarker(myMarker);