Android Open Source - Mapyst Animated Map Zoomer






From Project

Back to project page Mapyst.

License

The source code is released under:

Apache License

If you think the Android project Mapyst listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright (C) 2013 Mapyst//from  www  .j av a 2s. c  o m
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.mapyst.android.ui.map;

import android.os.Handler;

import com.google.android.maps.MapController;
import com.google.android.maps.MapView;

public class AnimatedMapZoomer implements Runnable {

  private final int targetLatSpan;
  private final int targetLongSpan;

  private final MapView mapView;
  private final MapController mapController;

  private final int startLatSpan;
  private final int startLongSpan;

  private final long time;

  private final Handler handler;

  public AnimatedMapZoomer(MapView mapView, Handler handler, int targetLatSpan, int targetLongSpan, long time) {
    this.targetLatSpan = targetLatSpan;
    this.targetLongSpan = targetLongSpan;
    this.mapView = mapView;
    this.mapController = mapView.getController();

    this.startLatSpan = mapView.getLatitudeSpan();
    this.startLongSpan = mapView.getLongitudeSpan();
    this.time = time;
    this.handler = handler;
  }

  // putting in new thread for now, may improve performance
  @Override
  public void run() {
    int x = mapView.getZoomLevel();

    int dir = 1;
    if (startLatSpan < targetLatSpan || startLongSpan < targetLongSpan)
      dir = -1;

    for (int i = mapView.getZoomLevel(); i < 25 && i >= 0; i += dir) {
      mapController.setZoom(i);
      if (i == 24  || i == 0 || (dir == 1 && (mapView.getLatitudeSpan() < targetLatSpan 
          || mapView.getLongitudeSpan() < targetLongSpan))
          || (dir == -1 && mapView.getLatitudeSpan() > targetLatSpan && mapView.getLongitudeSpan() > targetLongSpan)) {
        mapController.setZoom(x);
        final int dirF = dir;
        int numZooms = Math.abs(x - i);
        long delay = 0;
        if (dir == 1) {
          delay = time;
          numZooms -= 1;
        }
        for (int j = 0; j < numZooms; j++) {
          handler.postDelayed(new Runnable() {
            @Override
            public void run() {
              if (dirF == -1) {
                mapController.zoomOut();
              } else {
                mapController.zoomIn();
              }
            }
          }, delay);
        }
        break;

      }
    }
  }
}




Java Source Code List

com.mapyst.FileHandlerInterface.java
com.mapyst.android.AndroidFileHandler.java
com.mapyst.android.CampusLoader.java
com.mapyst.android.Compass.java
com.mapyst.android.DirectionsList.java
com.mapyst.android.Images.java
com.mapyst.android.LocationFinder.java
com.mapyst.android.MainScreen.java
com.mapyst.android.Mapyst.java
com.mapyst.android.Settings.java
com.mapyst.android.Splash.java
com.mapyst.android.asynctask.CampusLoaderTaskPrefs.java
com.mapyst.android.asynctask.CampusLoaderTask.java
com.mapyst.android.asynctask.RouteMakerTaskPrefs.java
com.mapyst.android.asynctask.RouteMakerTask.java
com.mapyst.android.ui.CenteredToastFactory.java
com.mapyst.android.ui.CompassOverlay.java
com.mapyst.android.ui.DirectionIcon.java
com.mapyst.android.ui.DirectionsListAdapter.java
com.mapyst.android.ui.DirectionsListItem.java
com.mapyst.android.ui.DrawingHelpers.java
com.mapyst.android.ui.Icon.java
com.mapyst.android.ui.LocationsAdapter.java
com.mapyst.android.ui.LocationsListView.java
com.mapyst.android.ui.RouteMapOverlay.java
com.mapyst.android.ui.SlidingScrollView.java
com.mapyst.android.ui.map.AnimatedMapZoomer.java
com.mapyst.android.ui.map.LocationBalloon.java
com.mapyst.android.ui.map.LocationChooserOverlay.java
com.mapyst.android.ui.map.MapUtils.java
com.mapyst.android.ui.map.MapViewLimiter.java
com.mapyst.android.ui.map.MapViewMover.java
com.mapyst.android.ui.map.OnMapTouchLimiterListener.java
com.mapyst.android.ui.map.PriorityMapView.java
com.mapyst.android.ui.map.ViewItemOverlay.java
com.mapyst.campus.Building.java
com.mapyst.campus.Campus.java
com.mapyst.campus.Floor.java
com.mapyst.campus.ListOfCampuses.java
com.mapyst.campus.Location_Type.java
com.mapyst.campus.Location.java
com.mapyst.route.Arc.java
com.mapyst.route.DataParser.java
com.mapyst.route.Direction.java
com.mapyst.route.DistanceCalculator.java
com.mapyst.route.GraphNode.java
com.mapyst.route.InterpretResult.java
com.mapyst.route.InterpretedInfo.java
com.mapyst.route.Interpreter.java
com.mapyst.route.LatLngPoint.java
com.mapyst.route.Prioritizable.java
com.mapyst.route.PriorityQ.java
com.mapyst.route.RouteFinder.java
com.mapyst.route.RoutePreferences.java
com.mapyst.route.Route.java
com.mapyst.route.ShortestPath.java
com.mapyst.route.Waypoint2D.java
com.mapyst.route.WaypointID.java
com.markupartist.android.widget.ActionBar.java
com.markupartist.android.widget.ScrollingTextView.java