如何将自定义属性添加到标记?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (38)

在使用Google Map API V3时,我可以通过以下方式添加自定义属性:

var marker = new google.maps.Marker({
  position: userLocation,
  map: myGoogleMap,
  animation: google.maps.Animation.DROP,
  icon: avatar,
  title: userName,
  customProperty1: bla,
  customProperty2: bla,
  customProperty3: bla,
  ...

});

我试图在render下面的函数中实现这一点:

private void render(Marker marker, View view) {
        int badge = R.drawable.android_face;

        if (marker.customProperty)
        //here I need to know this property to decide which image to use        
                         badge = R.drawable.bla;

        ((ImageView) view.findViewById(R.id.badge))
                    .setImageResource(badge);

}
提问于
用户回答回答于

你不能直接延伸Marker,因为它是最后一类,但你有一些选择:

0)从Google Maps Android API v2版本9.4.0开始,你可以使用Marker::getTagMarker::setTag。这很可能是首选。

1)创建一个地图来存储所有附加信息:

private Map<Marker, MyData> allMarkersMap = new HashMap<Marker, MyData>();

创建标记时,请使用你的数据将其添加到此地图中:

Marker marker = map.addMarker(...);
allMarkersMap.put(marker, myDataObj);

后来在你的render功能:

MyData myDataObj = allMarkersMap.get(marker);
if (myDataObj.customProp) { ...

这与第1点非常相似,但可以使用直接存储MyData到标记中:

marker.setData(myDataObj);

然后:

MyData myDataObj = (MyData) marker.getData();

扫码关注云+社区