Это факт, который я обнаружил позже в моем проекте: MapView
на самом деле ViewGroup
( также упоминается здесь ). Таким образом, вместо использования сложного наложения и прикрепления рисованных объектов, вы можете просто создать кнопку (или текстовое представление, или какой-то вложенный макет, или все, что вы хотите отобразить над картой), назначить ему экземпляр MapView.LayoutParams
и добавить его до MapView
.
В коде:
// Create the overlay pin
View overlayPin = getLayoutInflater().inflate(R.layout.overlay_pin, null);
// Number it according to your question, e.g.
((TextView)(overlayPin.findViewById(R.id.overlay_text))).setText("1");
Допустим, вы хотите поместить булавку в географические координаты -60, 30.
// Set a layout params to the pin.
overlayPin.setLayoutParams(new MapView.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, new GeoPoint(-60000000, 30000000), MapView.LayoutParams.BOTTOM_CENTER);
// Add the pin to the map
mapView.addView(overlayPin);
Таким образом, вы можете использовать только один графический актив для фона булавки и использовать TextView
для нумерации.