GoogleMap.InfoWindowAdapter自定义和默认

时间:2014-10-20 09:32:12

标签: android google-maps markers

我有一个带谷歌地图的应用,其中包含一些带有个性化InfoWindowAdapter [1]的标记。 这很好但现在我想添加一些标记,我不假装使用相同的个性化infoWindow。默认设置为OK。问题是,当我点击最后添加的标记之一时,我收到错误:java.lang.arrayindexoutofboundsexception length=1 index=1。我认为这是因为这些新标记使用了第一个标记的自定义infoAdapter,所以我的问题是:如何使用默认infoAdapter设置最后一个标记?

我已阅读:'要替换默认信息窗口,请使用自定义呈现覆盖getInfoWindow(Marker),并为getInfoContents(Marker)返回null。要仅替换默认信息窗口框内的信息窗口内容(标注气泡),请在null中返回getInfoWindow(Marker)并覆盖getInfoContents(Marker)而不是'尝试类似[2]的东西,但没有成功。

有人知道如何解决这个问题吗?

[1]

private class poisInfoWindowAdapter implements InfoWindowAdapter {

    @Override
    public View getInfoWindow(Marker arg) {
        return null;
    }

    @Override
    public View getInfoContents(Marker marker) {
            String SnippetContent = marker.getSnippet();
            String[] parts = SnippetContent.split("//");

            // Get Layout of POI's popup's and assign JSON values to text views.
            View InfoPopupLayout = getLayoutInflater().inflate(R.layout.infopopup,null);

            TextView t = ((TextView) InfoPopupLayout.findViewById(R.id.title));
            t.setText(marker.getTitle());

            TextView p = (TextView) InfoPopupLayout.findViewById(R.id.parking);
            p.setText(getString(R.string.parking_pwd) + convertInfoPoisValues(parts[2]));

            return InfoPopupLayout;
    }
}

[2]

private class poisInfoWindowAdapter implements InfoWindowAdapter {
    @Override
    public View getInfoWindow(Marker arg) {
        return null;
    }

    @Override
    public View getInfoContents(Marker marker) {
        if (marker.getTitle() == "Obstáculo") {
            return null;
        }
        else {
            String SnippetContent = marker.getSnippet();
            String[] parts = SnippetContent.split("//");

            // Get Layout of POI's popup's and assign JSON values to text views.
            View InfoPopupLayout = getLayoutInflater().inflate(R.layout.infopopup,null);

            TextView t = ((TextView) InfoPopupLayout.findViewById(R.id.title));
            t.setText(marker.getTitle());

            TextView p = (TextView) InfoPopupLayout.findViewById(R.id.parking);
            p.setText(getString(R.string.parking_pwd) + convertInfoPoisValues(parts[2]));

            return InfoPopupLayout;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

修正了,我只需要在'(marker.getTitle()==“Obstáculo”)'中使用'equals'。