Я создаю MapView, и я хочу, чтобы мои пользовательские элементы наложения отображали имя местоположения, которое они маркируют, когда пользователь нажимает на них, например приложение Android Maps.Android: метки наложения карт
Я устанавливаю прослушиватель onTap и плавающий TextView для хранения имени местоположения. Мне все равно нужно настроить его таким образом, чтобы он перерисовывал метку, когда пользователь перемещает карту и т. Д.
В любом случае, мне интересно, если я изобретаю колесо здесь. Есть ли встроенный метод, о котором я не знаю? Я бы подумал, что большинство реализаций MapView имеют метки.
Для справки, моя реализация до сих пор:
в XML Карта:
<LinearLayout android:id="@+id/mapBubbleWrap"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true">
<TextView android:id="@+id/mapBubble"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:background="#ffffff"
android:textColor="#ff0000"/>
</LinearLayout>
в моей расширенной ItemizedOverlay:
public boolean onTap(int index) {
this.setFocus(mOverlays.get(index));
return true;
}
в моей деятельности OnFocus:
public void onFocusChanged(ItemizedOverlay overlay, OverlayItem item) {
if(item != null) {
mapBubble.setText(item.getTitle());
Point newPoint = mapView.getProjection().toPixels(item.getPoint(), null);
mapBubbleWrap.setPadding(newPoint.x, newPoint.y-10, 0, 0);
mapBubble.setVisibility(View.VISIBLE);
}
}