2017-02-25 29 views
0

我得到了一個Mapbox(android應用程序)上顯示的Spots列表作爲標記。當用戶點擊標記時,InfoWindow彈出。我想將一個ClickListener添加到InfoWindow中,以便當用戶點擊它時,我將他重定向到一個包含有關該Spot的更多信息的頁面。哪個對象對應於點擊標記? Mapbox onInfoWindowClick

標記沒有setId,setTag或類似的東西。那麼我怎麼能知道我列表中的哪個對象與那個被點擊的標記相對應呢?

回答

0

發現,繼承是可能的,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); 
相關問題