【问题标题】:Unique marker ID for arraylist数组列表的唯一标记 ID
【发布时间】:2014-01-31 13:33:12
【问题描述】:

我想要做的是当有人点击谷歌地图上的标记时,我需要从我的 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;
                    }
                }
   }

【问题讨论】:

    标签: android google-maps arraylist google-maps-markers


    【解决方案1】:

    marker.toString() 怎么样? 您可以使用HashMap,而不是使用ArrayList 来存储标记并遍历列表来查找您的值。当您添加标记时,您将marker.toString() 作为键并将您想要与标记关联的任何信息作为值放入HashMap

    顺便说一句:由于您比较Strings 的方式,您找到点击标记的方法可能不起作用:

    value == marker.getTitle()
    

    这会检查两个String 引用是否完全相同String object。要比较 String values,请执行

     value.equals(marker.getTitle())
    

    【讨论】:

    • Yes value.equals 解决了我的搜索问题。我认为最好的方法是让 sn-p 我的 ID 号然后找到它。有没有办法隐藏 sn-p 但它仍然存在所以我可以引用它但用户看不到它?
    • 我认为您无法隐藏 sn-p。另外,您必须自己设置它,而 marker.toString() 会自动“工作”。
    • 我确实找到了隐藏它的方法。使用 InfoWindowAdapter 和 setInfoWindowAdapter() .. 似乎工作得很好,但你的回答确实帮助我进行了搜索,所以我接受了它。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 2013-08-03
    相关资源
    最近更新 更多