我想检查我的谷歌地图标记是否有这样的图像资源:
if (marker.getIcon() == BitmapDescriptorFactory.fromResource(R.drawable.imagefile)) {
}
但是marker.getIcon不起作用,那么如何调用标记的图标?
答案 0 :(得分:0)
你无法获得图标,并且等于无论如何都不会有效(如果你从BitmapDescriptorFactory获得它不是同一个对象。
无论如何,您可以尝试将String ID用于标记而不是图标
答案 1 :(得分:0)
您可以使用HashMap存储添加到地图的每个标记的Icon类型。
我刚刚得到了一个简单的例子,使用HashMap将Marker ID映射到当前为Marker设置的Icon的颜色。
如果您使用的是自定义Drawable,则可以使用HashMap<String, Integer>
代替HashMap<String, Float>
,就像我在这个简单示例中所做的那样。
如果更改标记图标颜色或Drawable资源,您还应该更新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);
}
}
点击每个标记后的结果: