2016-04-27 3 views

ответ

1

Нашел ответ самостоятельно.

Просто нужно создать статический метод, аннотированный с помощью @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} /> 
... 
+0

Но это '' com.google.android.gms.maps.MapView правильный способ использования карты? Я имею в виду, что в каждой документации вам предлагается использовать фрагмент, и мне интересно, является ли это устаревшим способом. – jturolla

+0

Им любопытно, о чем спросит jturolla. Но я понимаю, что вы можете использовать @BindingAdapter так же, как с новым путем? Я только начинаю с mvvm, поэтому я немного смущен тем, кто должен иметь дело с обновлениями карты. – leojg

+0

Насколько я знаю, это не запрещено использовать MapView (что делает MapFragment сам), но вам просто нужно позаботиться о доставке событий жизненного цикла в MapView – Ivan

Смежные вопросы