2015-06-27 43 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); 

    } 
} 

结果