我想要做的是当有人点击谷歌地图上的标记时,我需要从我的ArrayList获取该标记的信息,然后将其传递给下一个活动,以便我可以显示有关该标记的其他详细信息标记。关于标记,我所知道的唯一选项是getSnippet,getTitle和getPosition。有没有办法为标记分配一个唯一的键,以便我可以从列表中提取它?原因是可能有两个同名的标记。现在,当我搜索它时,它甚至没有按名称找到标记。
// WHEN A USER CLICKS A MAKER ON THE MAP
@Override
public void onInfoWindowClick(Marker marker)
{
// TESTING TO SEE WHAT MY VALUE WOULD BE IN THE LIST RETURNS - TEST MARKER
// DISPLAY ON SCREEN SO I CAN SEE WHAT THE VALUE IS
Toast.makeText(this, "Found " + marker.getTitle(), Toast.LENGTH_SHORT).show();
// SEARCH MY LIST FOR VALUE
for(int i = 0; i < marker_list.size(); i++)
{
// IF THIS VALUE IS SAME AS MARKER TITLE
String value = marker_list.get(i);
if(value == marker.getTitle())
{
Toast.makeText(this, "Found " + value,Toast.LENGTH_SHORT).show();
break;
}
}
}
答案 0 :(得分:1)
marker.toString()
怎么样?
您可以使用ArrayList
,而不是使用HashMap
来存储标记并在列表中运行以查找您的值。添加标记后,您将marker.toString()
作为关键字,将要与标记关联的任何信息作为值放入HashMap
。
顺便说一句:由于您比较Strings
的方式,您找到点击标记的方法可能无效:
value == marker.getTitle()
检查两个String
引用是否完全相同String object
。要比较String values
,请执行
value.equals(marker.getTitle())