【问题标题】:Issue with HashMap<String,Marker> in androidHashMap<String,Marker> 在android中的问题
【发布时间】:2013-06-14 08:51:40
【问题描述】:

我想跟踪地图上的标记。单击特定标记时,我需要显示有关该标记的信息。

我正在使用一个 HashMap 变量来跟踪添加到地图上的标记。

for (int i = 0; i <= PropertyStub.size() - 1; i++) {
        final LatLng MeanLatLng = new LatLng(PropertyStub.get(i).Latitude,
                PropertyStub.get(i).Longitude);

        if (!visibleMarkers.containsKey(PropertyStub.get(i).PropertyID)) {
            visibleMarkers
                    .put(PropertyStub.get(i).PropertyID,
                            this.map.addMarker(new MarkerOptions()
                                    .position(MeanLatLng)
                                    .title("Property")

                                    .icon(BitmapDescriptorFactory
                                            .fromResource(R.drawable.pink_outside_marker))));

        }
    }

当我单击特定标记时,我需要该单击标记的 PropertyID 值,

 public boolean onMarkerClick(Marker marker) {

    marker.showInfoWindow();
    tvPropertyID.setText("" + visibleMarkers.get(marker));

    return true;
}

但我得到“visibleMarkers.get(marker)”为空。信息窗口上显示一个空字符串。 我在哪里做错了?请纠正我。请给我一个有用的链接。

提前致谢!!

【问题讨论】:

  • visibleMarkers.get(marker) - 你的钥匙不是字符串吗?不应该更像visibleMarkers.get(PropertyID)吗?假设 PropertyID 是一个字符串

标签: android map hashmap marker infowindow


【解决方案1】:

"visibleMarkers.get(marker)" 为空,因为您的键是字符串,而不是标记。

这里是您填充地图的位置:

visibleMarkers.put(PropertyStub.get(i).PropertyID, ...);

假设 PropertyID 是一个字符串,那么 visibleMarkers.get(marker) 当然会为空,因为你没有得到正确的键。

听起来您需要 HashMap of Markers->Strings,因为您似乎需要查找给定 MarkerString 值。将您的数据结构更改为 HashMap&lt;Marker,String&gt; 并从那里获取。

【讨论】:

  • 这就是我实例化 HashMap 的方式: HashMap visibleMarkers = new HashMap();
  • 这不是你要找的数据结构!将其更改为:HashMap&lt;Marker, String&gt; visibleMarkers = new HashMap&lt;Marker, String&gt;();,当然还要翻转 put 语句中的参数。
  • 是的!得到了区别。谢谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-22
  • 2015-02-19
相关资源
最近更新 更多