1

很惊讶我已经找不到答案了,但是我在使用谷歌地图的信息窗口做一些非常简单的事情时遇到了问题。我想创建一个自定义信息窗口,其中包含三段文本,其中一段具有可自定义的颜色(取决于文本,但最好在放置标记时通过传入参数来设置此颜色)。这在 v1 中非常容易,但在 v2 中似乎完全搞砸了。

在我的主要活动中,我有这一部分将我的自定义布局添加到 InfoWindowAdapter:

class MyInfoWindowAdapter implements InfoWindowAdapter{
    private final View myContentsView;

    MyInfoWindowAdapter(){
        myContentsView = getLayoutInflater().inflate(R.layout.popup, null);
    }

    @Override
    public View getInfoContents(Marker marker) {

        TextView textStationName = (TextView) myContentsView.findViewById(R.id.textStationName);
        textStationName.setText(marker.getTitle());

        TextView textAPI = ((TextView)myContentsView.findViewById(R.id.textAPI));
        textAPI.setText(marker.getSnippet());

        return myContentsView;
    }   

    @Override
    public View getInfoWindow(Marker marker) {
        // TODO Auto-generated method stub
        return null;
    }
}

创建标记时,我可以获得两条文本,“标题”和“片段”。但是我想在那里显示三段文本。到目前为止,我看到的所有示例都仅限于两段文本 - 无法获得第三个(或第四个,......)元素。

我正在使用 v4-support 库(使用 API 版本 8) ,不幸的是,这里给出的操作方法对我不起作用。

4

2 回答 2

1

我可以建议将您的地图标记的内容存储Map<Marker, InfoWindowContent在您的活动中,其中InfoWindowContent一些类具有用于填充标记的信息窗口的字段。

将标记添加到地图后,put带有信息窗口内容的标记将添加到Map. 然后,在您的信息窗口内容适配器中,从Map.

这是一个例子:

public class MyActivity extends Activity {

    private static class InfoWindowContent {
        public String text1;
        public String text2;
        public String text3;
        // ... add other fields if you need them
    }

    private Map<Marker, InfoWindowContent> markersContent = new HashMap<Marker, InfoWindowContent>();

    private void addMarker() {
        Marker marker = map.addMarker(...);
        InfoWindowContent markerContent = new InfoWindowContent();
        // ... populate content for the marker

        markersContent.put(marker, markerContent);
    }

    class MyInfoWindowAdapter implements InfoWindowAdapter {

        @Override
        public View getInfoContents(Marker marker) {
            InfoWindowContent markerContent = markersContent.get(marker);

            // ... populate info window with your content
        }
    }
}
于 2013-03-15T17:55:08.167 回答
0

或者,您可以将附加信息作为 anJSONObject放在 中,并以如下方法Marker访问它getInfoContents

    JSONObject content = new JSONObject(marker.getSnippet());
    textView1.setText(content.getString("myFirstInfo"));
    textView2.setText(content.getString("mySecondInfo"));
于 2013-03-19T09:08:26.480 回答