1
Просто интересно, как я могу привязать широту и долготу к com.google.android.gms.maps.MapView
. Похоже, он не раскрывает для этого никаких атрибутов компоновки.Привязать местоположение к MapView в MVVM
Просто интересно, как я могу привязать широту и долготу к com.google.android.gms.maps.MapView
. Похоже, он не раскрывает для этого никаких атрибутов компоновки.Привязать местоположение к MapView в MVVM
Нашел ответ самостоятельно.
Просто нужно создать статический метод, аннотированный с помощью @BindingAdapter. Что-то вроде:
@BindingAdapter("app:latLong")
public static void bindLocationToMap(MapView mapView, LatLng latLong) {
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(latLong, 10);
mapView.animateCamera(cameraUpdate);
}
и использование атрибута определено выше в макете:
...
<com.google.android.gms.maps.MapView android:id="@+id/mapview"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:location="@{latLong} />
...
Но это '' com.google.android.gms.maps.MapView правильный способ использования карты? Я имею в виду, что в каждой документации вам предлагается использовать фрагмент, и мне интересно, является ли это устаревшим способом. – jturolla
Им любопытно, о чем спросит jturolla. Но я понимаю, что вы можете использовать @BindingAdapter так же, как с новым путем? Я только начинаю с mvvm, поэтому я немного смущен тем, кто должен иметь дело с обновлениями карты. – leojg
Насколько я знаю, это не запрещено использовать MapView (что делает MapFragment сам), но вам просто нужно позаботиться о доставке событий жизненного цикла в MapView – Ivan