我想检查我的谷歌地图标记具有一定的图像的ressource这样的:呼叫标记图标
if (marker.getIcon() == BitmapDescriptorFactory.fromResource(R.drawable.imagefile)) {
}
但marker.getIcon不工作,所以我怎么能叫标记的图标?
我想检查我的谷歌地图标记具有一定的图像的ressource这样的:呼叫标记图标
if (marker.getIcon() == BitmapDescriptorFactory.fromResource(R.drawable.imagefile)) {
}
但marker.getIcon不工作,所以我怎么能叫标记的图标?
你不能得到的图标,等号不会是有效的,也(这是不是同一个对象,如果你从BitmapDescriptorFactory得到。
无论如何,你可以尝试使用字符串ID为标志,而不是图标
您可以使用HashMap来存储图标的类型,它被添加到地图中的每个标记。
我刚刚得到一个简单的例子工作给予的总体思路,使用映射的标记ID是一个HashMap以当前为标记设置的图标的颜色。
如果您使用的是自定义Drawable,则可以使用HashMap<String, Integer>
而不是HashMap<String, Float>
,就像我在这个简单示例中所示。
如果更改标记图标颜色或可绘制资源,还应该更新HashMap。
类代码:
:点击每个标记后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);
}
}
结果