/* * Copyright (c) 2015 Daimler AG / Moovel GmbH * * All rights reserved */ package com.car2go.maps.osm; import com.car2go.maps.AnyMap; import com.car2go.maps.CameraUpdate; import com.car2go.maps.model.LatLng; import org.osmdroid.api.IMapController; import org.osmdroid.views.MapView; import static com.car2go.maps.osm.util.OsmUtils.toGeoPoint; /** * Handles incoming {@link CameraUpdate} events */ class CameraUpdateHandler { private final org.osmdroid.views.MapView map; public CameraUpdateHandler(MapView map) { this.map = map; } /** * @see AnyMap#moveCamera(CameraUpdate) */ public void moveCamera(CameraUpdate cameraUpdate) { final OsmCameraUpdate osmCameraUpdate = (OsmCameraUpdate) cameraUpdate; final IMapController controller = map.getController(); if (osmCameraUpdate.bounds != null) { final LatLng center = osmCameraUpdate.bounds.getCenter(); controller.setZoom(map.getMaxZoomLevel()); controller.zoomToSpan( (int) ((osmCameraUpdate.bounds.northeast.latitude - osmCameraUpdate.bounds.southwest.latitude) * 1e6), (int) ((osmCameraUpdate.bounds.northeast.longitude - osmCameraUpdate.bounds.southwest.longitude) * 1e6) ); controller.setCenter( toGeoPoint(center) ); return; } if (osmCameraUpdate.zoom != null) { controller.setZoom(osmCameraUpdate.zoom.intValue()); } if (osmCameraUpdate.center != null) { controller.setCenter( toGeoPoint(osmCameraUpdate.center) ); } } /** * @see AnyMap#animateCamera(CameraUpdate) */ public void animateCamera(CameraUpdate cameraUpdate) { moveCamera(cameraUpdate); } /** * @see AnyMap#animateCamera(CameraUpdate, AnyMap.CancelableCallback) */ public void animateCamera(CameraUpdate cameraUpdate, AnyMap.CancelableCallback callback) { moveCamera(cameraUpdate); callback.onFinish(); } /** * @see AnyMap#animateCamera(CameraUpdate, int, AnyMap.CancelableCallback) */ public void animateCamera(CameraUpdate cameraUpdate, int duration, AnyMap.CancelableCallback callback) { moveCamera(cameraUpdate); callback.onFinish(); } }