我想檢查我的谷歌地圖標記具有一定的圖像的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);
}
}
結果