2014-10-20 136 views
1

我有一個應用程序與谷歌地圖包含幾個標記與個性InfoWindowAdapter [1]。 這很好,但現在我想添加更多的標記,並且我不假裝使用相同的個性化信息窗口。對此,默認是OK。問題是當我點擊最後添加的標記中的一個時,出現錯誤:java.lang.arrayindexoutofboundsexception length=1 index=1。我認爲會發生這種情況,因爲這些新標記正在使用第一個標記的自定義infoAdapter,所以我的問題是:我如何設置默認的infoAdapter的最後一個標記?GoogleMap.InfoWindowAdapter自定義和默認

我讀過:'要替換默認的信息窗口,請用您的自定義渲染覆蓋getInfoWindow(Marker),並返回空值爲getInfoContents(Marker)。要僅替換默認信息窗口框架(標註泡泡)內的信息窗口內容,請返回null in 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; 
     } 
    } 
} 

回答

0

固定,我只需要使用在 '(marker.getTitle()== 「Obstáculo」)' '等於'。