Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class MainActivity extends AppCompatActivity {
- private static final int REQUEST_CODE_ASK_PERMISSIONS = 0x01;
- private Map m_map;
- private MapView m_mapView;
- private MapMarker marker;
- private Route route;
- private boolean updateMap = false;
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- m_mapView = findViewById(R.id.map);
- requestPermissions();
- }
- private void requestPermissions() {
- final int result = ContextCompat.checkSelfPermission(this,
- Manifest.permission.WRITE_EXTERNAL_STORAGE);
- if (result != PackageManager.PERMISSION_GRANTED) {
- ActivityCompat.requestPermissions(this,
- new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE},
- REQUEST_CODE_ASK_PERMISSIONS);
- } else {
- initMap();
- }
- }
- @Override
- public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
- @NonNull int[] grantResults) {
- final boolean permissionGranted = grantResults.length > 0
- && (requestCode == REQUEST_CODE_ASK_PERMISSIONS
- && grantResults[0] == PackageManager.PERMISSION_GRANTED);
- if (permissionGranted) {
- initMap();
- } else {
- requestPermissions();
- }
- }
- /**
- * Initialize m_map engine.
- * After initialization set m_map object for {@link MapView}.
- * Also in callback check if initialization completed successfully
- */
- private void initMap() {
- MapEngine.getInstance().init(new ApplicationContext(getApplicationContext()),
- new OnEngineInitListener() {
- @Override
- public void onEngineInitializationCompleted(Error error) {
- if (error == Error.NONE) {
- /* get the map object */
- m_map = new Map();
- m_mapView.setMap(m_map);
- startRoute();
- } else {
- Toast.makeText(getApplicationContext(), error.name(),
- Toast.LENGTH_SHORT).show();
- }
- }
- });
- }
- @Override
- protected void onResume() {
- super.onResume();
- m_mapView.onResume();
- if (updateMap) {
- m_map.zoomTo(route.getBoundingBox(), Map.Animation.NONE, 10f);
- m_map.setZoomLevel(12.0);
- updateMap = false;
- }
- }
- @Override
- protected void onUserLeaveHint() {
- super.onUserLeaveHint();
- if (!isInPictureInPictureMode()) {
- final PictureInPictureParams.Builder builder = new PictureInPictureParams.Builder();
- builder.setAspectRatio(new Rational(2, 3));
- enterPictureInPictureMode(builder.build());
- }
- }
- @Override
- public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode, Configuration newConfig) {
- super.onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig);
- if (isInPictureInPictureMode) {
- m_map.setCenter(marker.getCoordinate(), Map.Animation.NONE);
- m_map.setZoomLevel(23.0);
- } else {
- updateMap = true;
- }
- }
- private void startRoute() {
- final GeoCoordinate start = new GeoCoordinate(52.52816, 13.39210);
- final GeoCoordinate end = new GeoCoordinate(52.51178, 13.49416);
- final RoutePlan plan = new RoutePlan();
- final RouteOptions routeOptions = new RouteOptions();
- routeOptions.setRouteCount(1);
- plan.addWaypoint(new RouteWaypoint(start));
- plan.addWaypoint(new RouteWaypoint(end));
- plan.setRouteOptions(routeOptions);
- final CoreRouter coreRouter = new CoreRouter();
- coreRouter.calculateRoute(plan, new Router.Listener<List<RouteResult>, RoutingError>() {
- @Override
- public void onProgress(int i) { }
- @Override
- public void onCalculateRouteFinished(List<RouteResult> routeResults, RoutingError routingError) {
- if (routingError == RoutingError.NONE) {
- route = routeResults.get(0).getRoute();
- m_map.addMapObject(new MapRoute(route));
- m_map.zoomTo(route.getBoundingBox(), Map.Animation.NONE, 10f);
- final Image image = new Image();
- try {
- image.setImageResource(R.drawable.arrow);
- marker = new MapMarker(start, image);
- m_map.addMapObject(marker);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- });
- }
- }
Add Comment
Please, Sign In to add comment