2015-06-27 41 views
0

我想檢查我的谷歌地圖標記具有一定的圖像的ressource這樣的:呼叫標記圖標

if (marker.getIcon() == BitmapDescriptorFactory.fromResource(R.drawable.imagefile)) { 
} 

但marker.getIcon不工作,所以我怎麼能叫標記的圖標?

回答

0

你不能得到的圖標,等號不會是有效的,也(這是不是同一個對象,如果你從BitmapDescriptorFactory得到。

無論如何,你可以嘗試使用字符串ID爲標誌,而不是圖標

0

您可以使用HashMap來存儲圖標的類型,它被添加到地圖中的每個標記。

我剛剛得到一個簡單的例子工作給予的總體思路,使用映射的標記ID是一個HashMap以當前爲標記設置的圖標的顏色。

如果您使用的是自定義Drawable,則可以使用HashMap<String, Integer>而不是HashMap<String, Float>,就像我在這個簡單示例中所示。

如果更改標記圖標顏色或可繪製資源,還應該更新HashMap。

類代碼:

enter image description here

enter image description here

enter image description here

:點擊每個標記後

public class MainActivity extends AppCompatActivity { 

    HashMap<String, Float> markerIcons = new HashMap<>(); 

    private GoogleMap mMap; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     setUpMapIfNeeded(); 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     setUpMapIfNeeded(); 
    } 

    private void setUpMapIfNeeded() { 
     // Do a null check to confirm that we have not already instantiated the map. 
     if (mMap == null) { 
      // Try to obtain the map from the SupportMapFragment. 
      mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) 
        .getMap(); 
      // Check if we were successful in obtaining the map. 
      if (mMap != null) { 
       setUpMap(); 
      } 
     } 
    } 

    private void setUpMap() { 

     mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { 

      Float markerColor; 
      @Override 
      public boolean onMarkerClick(Marker marker) { 
       markerColor = markerIcons.get(marker.getId()); 
       if (markerColor == BitmapDescriptorFactory.HUE_MAGENTA){ 
        Toast.makeText(MainActivity.this, "HUE_MAGENTA", Toast.LENGTH_LONG).show(); 
       } 
       else if (markerColor == BitmapDescriptorFactory.HUE_AZURE){ 
        Toast.makeText(MainActivity.this, "HUE_AZURE", Toast.LENGTH_LONG).show(); 
       } 
       else if (markerColor == BitmapDescriptorFactory.HUE_CYAN){ 
        Toast.makeText(MainActivity.this, "HUE_CYAN", Toast.LENGTH_LONG).show(); 
       } 


       return false; 
      } 

     }); 
     Marker marker = null; 
     marker = mMap.addMarker(new MarkerOptions().position(new LatLng(2, 2)).title("Marker Magenta").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA))); 
     markerIcons.put(marker.getId(), BitmapDescriptorFactory.HUE_MAGENTA); 

     marker = mMap.addMarker(new MarkerOptions().position(new LatLng(3, 3)).title("Marker Azure").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))); 
     markerIcons.put(marker.getId(), BitmapDescriptorFactory.HUE_AZURE); 

     marker = mMap.addMarker(new MarkerOptions().position(new LatLng(4, 4)).title("Marker Cyan").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN))); 
     markerIcons.put(marker.getId(), BitmapDescriptorFactory.HUE_CYAN); 

    } 
} 

結果