Android Open Source - android-open-street-map Osm Location Overlay






From Project

Back to project page android-open-street-map.

License

The source code is released under:

Apache License

If you think the Android project android-open-street-map 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

package com.android.lib.map.osm.overlay;
/*from  w w  w .j  av a  2 s.  c  o m*/
import com.android.lib.map.osm.GeoPoint;
import com.android.lib.map.osm.OsmMapView;
import com.android.lib.map.osm.OsmMapView.OsmMapViewBuilder;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Point;
import android.location.Location;
import android.view.View;


public class OsmLocationOverlay extends OsmOverlay {
  
  private Bitmap mLocationDot;
  private Bitmap[] mArrowBitmaps;
  private OsmMapViewBuilder mOsmMapViewBuilder;
  private Context mContext;
  private Location mLocation;
  private Integer mHeading;
  private OsmMapView mMapView;
  
  
  public OsmLocationOverlay(Context c, OsmMapViewBuilder mapbuilder, OsmMapView mapView) {
    mLocationDot = BitmapFactory.decodeResource(c.getResources(), mapbuilder.getPositionIndicatorDrawableId());
    mOsmMapViewBuilder = mapbuilder;
    mContext = c;
    mMapView = mapView;
    initHeadingArrow();
  }

  @Override
  public void draw(android.graphics.Canvas canvas, View view) {
    GeoPoint g = null;
    
    if (mLocation != null) {
      g = new GeoPoint((int) (mLocation.getLatitude() * 1E6), (int) (mLocation.getLongitude() * 1E6));
    }

    if (g != null) {
            
      if (mHeading != null) {
        
        drawBearingArrow(canvas, mMapView, g, mHeading);
        
      } else {
        Point center = mMapView.geopointToPixelProjection(g);
        canvas.drawBitmap(mLocationDot, center.x - (mLocationDot.getWidth()  / 2), 
          center.y - (mLocationDot.getHeight() / 2),  null);
      }
    }
  }
  
  private void initHeadingArrow() {
    mArrowBitmaps = new Bitmap[20]; 
    mArrowBitmaps[0] = BitmapFactory.decodeResource(mContext.getResources(), mOsmMapViewBuilder.getArrowPositionIndicatorDrawableId());
    for (int i = 1, angle = 20; angle <= 360; i++, angle += 20) {
      Matrix matrix = new Matrix();
      matrix.postRotate(angle);
      mArrowBitmaps[i] = Bitmap.createBitmap(mArrowBitmaps[0], 0, 0, mArrowBitmaps[0].getWidth(),
          mArrowBitmaps[0].getHeight(), matrix, true);
    }
  }
  
  public void setLocation(Location location) {
    mLocation = location;
  }
  
  public void setHeading(Integer heading) {
    mHeading = heading;
  }
  
  private void drawBearingArrow(Canvas canvas, OsmMapView mapView, GeoPoint currentLocation, int heading) {

    try {
    
      int indexArrowBitmap = heading/20;
      // translate the GeoPoint to screen pixels
      Point screenPts = mapView.geopointToPixelProjection(currentLocation);
  
      // add the rotated marker to the canvas
      canvas.drawBitmap(mArrowBitmaps[indexArrowBitmap],
          screenPts.x - (mArrowBitmaps[indexArrowBitmap].getWidth() / 2), screenPts.y
              - (mArrowBitmaps[indexArrowBitmap].getHeight() / 2), null);

    } catch (Exception e) {
      e.printStackTrace();
    }
    
  }
  
}




Java Source Code List

com.android.lib.map.osm.BitmapScaler.java
com.android.lib.map.osm.Configuration.java
com.android.lib.map.osm.GeoPoint.java
com.android.lib.map.osm.InDbTileLoader.java
com.android.lib.map.osm.InMemoryTilesCache.java
com.android.lib.map.osm.LRUMap.java
com.android.lib.map.osm.ManageTilesCached.java
com.android.lib.map.osm.OsmMapViewBase.java
com.android.lib.map.osm.OsmMapView.java
com.android.lib.map.osm.OsmOverlayListener.java
com.android.lib.map.osm.Projection.java
com.android.lib.map.osm.RemoteAsyncTileLoader.java
com.android.lib.map.osm.RemoteTileLoader.java
com.android.lib.map.osm.RequestTile.java
com.android.lib.map.osm.RequestsQueue.java
com.android.lib.map.osm.ResizedTilesCache.java
com.android.lib.map.osm.TileHandler.java
com.android.lib.map.osm.Tile.java
com.android.lib.map.osm.TilesDownloader.java
com.android.lib.map.osm.TilesProvider.java
com.android.lib.map.osm.controller.IMapInteractionListener.java
com.android.lib.map.osm.helpers.CustomDatabaseHelper.java
com.android.lib.map.osm.helpers.OsmDatabaseHelper.java
com.android.lib.map.osm.helpers.ScaleGestureHelper.java
com.android.lib.map.osm.helpers.ScaleGesturePreFroyoHelper.java
com.android.lib.map.osm.models.MapEntity.java
com.android.lib.map.osm.models.MapTileEntity.java
com.android.lib.map.osm.models.MapTile.java
com.android.lib.map.osm.models.OsmModel.java
com.android.lib.map.osm.overlay.MapMarker.java
com.android.lib.map.osm.overlay.MapPolygon.java
com.android.lib.map.osm.overlay.MapTrack.java
com.android.lib.map.osm.overlay.OsmLocationOverlay.java
com.android.lib.map.osm.overlay.OsmMarkerOverlay.java
com.android.lib.map.osm.overlay.OsmOverlay.java
com.android.lib.map.osm.overlay.OsmPolygonOverlay.java
com.android.lib.map.osm.overlay.OsmTrackOverlay.java
com.android.lib.map.osm.utils.CountDownTimer.java
com.android.lib.map.osm.utils.DateUtil.java
com.android.lib.map.osm.utils.PolygonUtils.java
com.android.lib.map.osm.utils.PolylineUtil.java