gpt4 book ai didi

android - 向标记添加自定义属性(Google Map Android API V2)

转载 作者:IT老高 更新时间:2023-10-28 23:18:22 24 4
gpt4 key购买 nike

使用 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,
...

});

我想知道我是否可以对 API V2 Android 做同样的事情,我想这样做的原因是每个标记的每个信息窗口都需要知道该标记的一些信息。我试图在下面的 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,因为它是一个final类,但是你有一些选择:

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

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

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

创建标记时,将其与您的数据一起添加到此 map 中:

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

稍后在您的 render 函数中:

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

2) 另一种方法是使用 Marker.snippet 将所有信息存储为 String 并稍后对其进行解析,但仅此而已有点丑陋且无法维护的解决方案。

3) 从普通的 Google Maps Android API v2 切换到 Android Maps Extensions .

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

marker.setData(myDataObj);

及以后:

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

关于android - 向标记添加自定义属性(Google Map Android API V2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16997130/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com