0

我正在使用谷歌地图扩展库。我有这个:

int nsize = visibleMarkers.size();
                for (int i = 0; i < nsize; i++) {
                    String title = visibleMarkers.valueAt(i).getTitle();
                    String desc = visibleMarkers.valueAt(i).getDesc();
                    Float latitude = visibleMarkers.valueAt(i).getLat();
                    Float longitude = visibleMarkers.valueAt(i).getLon();

                    m = map.addMarker(new MarkerOptions()
                            .position(new LatLng(latitude, longitude))
                            .title(title)
                            .icon(BitmapDescriptorFactory
                                    .fromResource(R.drawable.snotel_marker)));

                }

并且地图被所有标记很好地填充。

我正在尝试将数据添加到 toast,以便在单击时从标记窗口中查看描述和标题:

map.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {

                            @Override
                            public void onInfoWindowClick(Marker marker) {
                                Toast.makeText(MainActivity.this,
                                        "Title: " + visibleMarkers.valueAt(i).getTitle(),
                                        Toast.LENGTH_SHORT).show();
                            }
                        });

当我添加这个 setOnInfoWindow 侦听器时,i变量需要是最终的。我想从我的 visibleMarkers SparseArray 中获取标记的标题,但我无法弄清楚如何从我点击的标记中获取数据。我知道 desc 中有信息,因为使用 .snippet(desc) 会显示标记点击的信息。

我在这里想念什么?

编辑:::

我更改了 onPostExecute,将 Marker m 和我的数据添加到另一个数组:

int nsize = visibleMarkers.size();
                for (int i = 0; i < nsize; i++) {
                    MapMarkers marks = new MapMarkers();
                    String title = visibleMarkers.valueAt(i).getTitle();
                    String desc = visibleMarkers.valueAt(i).getDesc();
                    Float latitude = visibleMarkers.valueAt(i).getLat();
                    Float longitude = visibleMarkers.valueAt(i).getLon();

                    m = map.addMarker(new MarkerOptions()
                            .position(new LatLng(latitude, longitude))
                            .title(title)
                            .icon(BitmapDescriptorFactory
                                    .fromResource(R.drawable.snotel_marker)));

                    marks.setTitle(title);
                    marks.setDesc(desc);

                    markerInfo.put(m, marks);

                    map.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
                        @Override
                        public void onInfoWindowClick(Marker marker) {

                            MapMarkers markInfo = markerInfo.get(marker);

                            Intent i = new Intent(MainActivity.this,
                                    MarkerInformation.class);
                            i.putExtra("name", markInfo.getTitle()).putExtra(
                                    "description", markInfo.getDesc());
                            i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                            startActivity(i);

                        }

                    });
                }

这看起来正确吗?

4

2 回答 2

2

首先,在您setOnInfoWindowClickListener的“i”中,与您按下的标记无关,与的唯一联系是在方法中传递的marker对象。onInfoWindowClick您可以直接从此标记对象获取数据,该对象包含您需要的所有数据,如果您不想要这个,请解释更多您的问题

于 2013-09-30T23:39:40.287 回答
1

试试这个

Toast.makeText(MainActivity.this, "Title: " + m.getTitle(), Toast.LENGTH_SHORT).show();

请注意,m 必须在外部声明。

于 2013-10-01T05:55:12.643 回答