Я думаю, что это может быть связано с тем, как вы тестируете тип OverlayItem.
Условие type.equals("bar||club")
будет истинным, только если строка типа "bar||club"
. Это означает, что если type является "bar", у него не будет никаких маркеров.
Я бы предложил создать статическую карту:
private static Map<String, Integer> types = new HashMap<String, Integer>();
Инициализируйте его на статическом блоке:
static {
types.put("bar", R.drawable.bars);
types.put("club", R.drawable.bars);
// ... the rest of mappings
}
и затем на конструкторе наложения просто сделайте это:
public PlaceOverlayItem(Context context, Place p, String type) {
super(p.getGeoPoint(), p.getName(), p.getFormatted_address());
int resId = types.get(type);
Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), resId);
this.marker = new BitmapDrawable(context.getResources(), bmp);
super.setMarker(this.marker);
this.point = p.getGeoPoint();
this.place = p;
}
В качестве альтернативы вы также можете создать файл json в папке raw и проанализировать его, чтобы получить сопоставление, используя: org.json . Таким образом, вы можете изменить значки, не переходя к коду и не используя его повторно в других классах.
Другая альтернатива, если вы чувствуете смелость реализовать ее, - это использовать аннотации для создания карты.
Удачи