我正在使用谷歌地图扩展库。我有这个:
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);
}
});
}
这看起来正确吗?