2015-05-29 44 views
0

我目前正在嘗試向我的Android應用程序添加多個標記。這工作完美。我遇到的唯一問題是,我無法在多個標記上綁定多個「onInfoWindowClick」。Android Google地圖添加多個標記,無法綁定onInfoWindowClick方法

舉例來說,如果我有這樣的:

   for (int i = 0; i < randomList; i++) { 

         MarkerOptions marker = new MarkerOptions().position(latlng).title(MainActivity.list.get(i).aMessage); 

          // adding marker 
          googleMap.addMarker(marker); 



         googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { 
          @Override 
          public void onInfoWindowClick(Marker marker) { 
           // Do something onclick 
          } 
         }); 

       } 

這將導致這樣的作品,每個標記一個infowindowclick,但我總是得到相同的數據傳回裏面那個「//做一些事情的onclick」這是因爲最後一個標記被設置爲這個事件。

什麼是我的過程將此事件附加到多個標記?

+0

你究竟想做什麼? –

回答

0

在每個循環上創建一個新的Marker並執行該方法:showInfoWindow();

for (int i = 0; i < randomList; i++) { 

         // MarkerOptions marker = new MarkerOptions().position(latlng).title(MainActivity.list.get(i).aMessage); 
        // adding marker 
        // googleMap.addMarker(marker);  
googleMap.addMarker(new MarkerOptions().position(latlng).title(MainActivity.list.get(i).aMessage)).showInfoWindow(); 



         googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { 
          @Override 
          public void onInfoWindowClick(Marker marker) { 
           // Do something onclick 
          } 
         }); 

       } 

通過您設置相同latlng價值的方式!

0

你不應該在循環內調用setOnInfoWindowClickListener(),這隻需要調用一次,它將適用於所有標記。

傳入onInfoWindowClick(Marker marker)的標記對象將始終是剛纔單擊的標記。

所以,把它拿出來。接下來,爲了弄清楚Marker剛剛被點擊了什麼,你可以得到Marker的標題,並遍歷你的列表,直到找到與Marker標題對應的值爲aMessage的列表項。

請注意,您也可以通過調用marker.getPosition();來按位置標識當前標記。

 googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { 
      @Override 
      public void onInfoWindowClick(Marker marker) { 
       //get location of Marker that was just clicked 
       LatLng latLon = marker.getPosition(); 

       // get the title of Marker that was just clicked 
       String title = marker.getTitle(); 

       //find item in the list that corresponds to currently clicked Marker 
       for (int i = 0; i < MainActivity.this.list.size(); i++){ 
        if (title.equals(MainActivity.this.list.get(i).aMessage)){ 
         //found current list item corresponding to 
         //the Marker that was just clicked! 
        } 
       } 
      } 
     }); 

     for (int i = 0; i < randomList; i++) { 

      MarkerOptions marker = new MarkerOptions().position(latlng).title(MainActivity.this.list.get(i).aMessage); 
      // adding marker 
      googleMap.addMarker(marker); 

     } 

我回答了類似的問題here,你可能會覺得這很有幫助。