Я сделал это, используя представления вместо наложений, поэтому вы добавили новый вид для каждого элемента на карте с помощью addItem. Вот это код:
AnnotationView
public AnnotationView(final Context context,final Object object) {
super(context);
setOrientation(VERTICAL);
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.map_overlay, this, true);
// Set the textview
lBubble = (LinearLayout) findViewById(R.id.lAnnotation);
txtPlace = ((TextView) (findViewById(R.id.txtPlace)));
txtPlace.setText(object.getName());
// set button touch listener
((ImageButton) (findViewById(R.id.btnPlace)))
.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//Do anything
};
});
// add your overlay on mapview by geopoint
btnMarker = ((ImageButton) (findViewById(R.id.btnMarker)));
btnMarker.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//Do anything };
});
setLayoutParams(new MapView.LayoutParams(
MapView.LayoutParams.WRAP_CONTENT,
MapView.LayoutParams.WRAP_CONTENT, new GeoPoint(
(int) (object.getLatitude() * 1E6),
(int) (object.getLongitude() * 1E6)),
MapView.LayoutParams.BOTTOM_CENTER));
}
Тогда я просто создал его и добавил на карту как:
overlay = new AnnotationView(this, object);
mapView.addView(overlay);
Макет map_overlay - это просто линейный маршрут, который вы хотите отобразить на карте в виде наложения (изображения, кнопки ...)
У меня проблема только с масштабированием, потому что при изменении масштаба точка немного меняется, я пытаюсь ее решить.
Надеюсь, это поможет
Приветствия