Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 哪个对象对应于单击的标记?信息窗口上的映射框单击_Android_Mapbox_Infowindow - Fatal编程技术网

Android 哪个对象对应于单击的标记?信息窗口上的映射框单击

Android 哪个对象对应于单击的标记?信息窗口上的映射框单击,android,mapbox,infowindow,Android,Mapbox,Infowindow,我得到了一个在地图盒(android应用程序)上作为标记显示的点列表。当用户单击一个标记时,信息窗口弹出。我想在该信息窗口中添加一个ClickListener,这样当用户单击它时,我就可以将他重定向到一个页面,其中包含关于该点的更多信息 标记没有setId、setTag或任何类似的内容。那么,我如何知道列表中的哪个对象对应于单击的标记呢?发现继承是可能的,并且有一种可能的解决方案: 您的自定义标记包含一个标记(或您想添加到其中的任何其他标记): 以及您的自定义BaseMarkerOptions类

我得到了一个在地图盒(android应用程序)上作为标记显示的点列表。当用户单击一个标记时,信息窗口弹出。我想在该信息窗口中添加一个ClickListener,这样当用户单击它时,我就可以将他重定向到一个页面,其中包含关于该点的更多信息


标记没有setId、setTag或任何类似的内容。那么,我如何知道列表中的哪个对象对应于单击的标记呢?

发现继承是可能的,并且有一种可能的解决方案:

您的自定义标记包含一个标记(或您想添加到其中的任何其他标记):

以及您的自定义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);
}

}

你好,leone,“对象id”是什么意思。这是两个不同的类文件吗?嗨@Indark。我不确定我是否理解你的问题。请你详细说明一下好吗?不管怎样,如果你想在mapbox上使用标记,我认为它们已经被弃用了。我认为你现在应该改用功能。我建议在mapbox网站上阅读一些最新的东西。Hello@Leonebaventura-有点困惑。让它发挥作用。非常感谢您的及时回复。非常感谢。
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);