0

我有一个 gmap v2 android 类,它通过解析我的 xml 文件中的数据来填充 gmap 上的点。我的 XML 文件包含我想要的 3 件事:

  • 坐标
  • 姓名
  • 描述

在标记上单击我想看到一个带有名称的信息窗口。我能得到那个。在 Infowindow 单击时,我想在文本视图中使用名称和描述开始一个新活动。

我不知道如何单击信息窗口以显示具有相应名称的描述的新活动。我尝试创建一个名为 MapMarkers 的类,然后将每个“条目”添加到其中,但它仅返回一个字符串,我无法弄清楚如何从中获取标题,但仍有 desc 可用于下一个活动:

public class MapMarkers {
    private LatLng coor;
    private String title;
    private String desc;

    public MapMarkers() {
        super();
    }

    public MapMarkers(LatLng coor, String title, String desc) {
        super();
        this.coor = coor;
        this.title = title;
        this.desc = desc;
    }

    @Override
    public String toString() {
        return coor + title + desc;
    }

    public LatLng getCoor() {
        return coor;
    }

    public void setCoor(LatLng coor) {
        this.coor = coor;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

}

这是我获取数据的 for 循环。所有的数据都在那里。我可以用 Log.v(TAG,data.toString());

for (XmlDom entry : entries) {
                    XmlDom lon = entry.tag("longitude");
                    XmlDom lat = entry.tag("latitude");
                    XmlDom name = entry.tag("name");
                    XmlDom desc = entry.tag("description");

                    final String firename = name.text();
                    final String firedesc = Html.fromHtml(desc.text()) + "";

                    String geoLon = lon.text();
                    String geoLat = lat.text();

                    String coor = lat + "," + lon;
                    // Log.e("COORS: ", coor);

                    double lati = Double.parseDouble(geoLat);
                    double lngi = Double.parseDouble(geoLon);

                    LOCATION = new LatLng(lati, lngi);

                    marks = new MapMarkers();
                    marks.setCoor(LOCATION);
                    marks.setTitle(firename);
                    marks.setDesc(firedesc);
                    mrkrs.add(marks);

                    for (int i = 0; i < mrkrs.size(); i++) {
                        map.addMarker(new MarkerOptions()
                                .position(LOCATION)
                                .title(firename)
                                .snippet("CLICK")
                                .icon(BitmapDescriptorFactory
                                        .fromResource(R.drawable.wfmi_icon48)));
                        map.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
                            @Override
                            public void onInfoWindowClick(Marker arg0) {
                                //Show full description in new activity. 
                            }
                        });

                    }

                }

如何保持此描述数据与地图标记相关联,以便在单击时我可以通过意图将此数据传递给具有此数据的新活动?

我希望这是有道理的....我有点迷路了。:)

编辑:

使用我创建的 MapMarkers 类,我的地图点在添加到地图时会显示正确的信息:

marks = new MapMarkers();
                    marks.setCoor(LOCATION);
                    marks.setTitle(firename);
                    marks.setDesc(firedesc);

                    map.addMarker(new MarkerOptions()
                            .position(marks.getCoor())
                            .title(marks.getTitle())
                            .snippet(marks.getDesc())
                            .icon(BitmapDescriptorFactory
                                    .fromResource(R.drawable.wfmi_icon48)));

但是,当我单击信息窗口时,我只能在测试消息警报窗口中获得最后一个“描述”:

map.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
                            @Override
                            public void onInfoWindowClick(Marker arg0) {
                                // Show full description in new activity.
                                fireDesc(marks.getTitle(), marks.getDesc());
                            }
                        });

所以从标记中获取描述是我的问题。希望清除它。

编辑编辑:

使用fireDesc(arg0.getTitle(), arg0.getSnippet());正在显示数据,所以我需要隐藏代码段?

4

2 回答 2

0

您可以将所需的任何详细信息传递给新的描述活动,其意图如下:

Intent i = new Intent(Activity1.this,Activity2.class);
i.putExtra("name", "xxx");
i.putExtra("description", "xxxxxx");
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
于 2013-08-24T07:11:16.983 回答
0

我希望我不会太晚。我通过将数据 ID 放入marker.snippet()解决了这个问题。然后我将可见性设置为消失,最后在onInfoWindowClick(Marker marker)我用String itemId = marker.getSnippet();检索它

希望它有所帮助,如果有更好的解决方案可以使代码段保持可见,我将很高兴阅读它。

于 2018-01-24T11:23:30.527 回答