Does it have to be an overlay? If it's just an image then you can
simply add it as a view to the mapView.

An overlay is just a layer. Unless you fill it with objects, nothing
will show.

On Mar 10, 1:54 pm, Bastiaan <[email protected]> wrote:
> Hello,
>
> I want to overlay a map image (.jpg) over the Google Maps mapview.
> The problem is: The overlay image is not showing, who knows what's the
> problem?
>
> There is no error in logcat and the MapView is working.
>
> The code:
>
> package nl.ultimo.android.skikaart;
>
> import java.util.List;
> import com.google.android.maps.GeoPoint;
> import com.google.android.maps.MapActivity;
> import com.google.android.maps.MapController;
> import com.google.android.maps.MapView;
> import com.google.android.maps.Overlay;
>
> import android.graphics.Bitmap;
> import android.graphics.BitmapFactory;
> import android.graphics.Canvas;
> import android.graphics.Point;
> import android.graphics.Rect;
> import android.os.Bundle;
>
> public class MapsActivity extends MapActivity
> {
>          Bitmap          bmp;    //Loaded bitmap in memory
>      GeoPoint        min;    //Top left corner (lat/long)
>      GeoPoint        max;    //Right bottom corner (lat/long)
>
>     /** Called when the activity is first created. */
>     @Override
>     public void onCreate(Bundle savedInstanceState)
>     {
>         super.onCreate(savedInstanceState);
>         setContentView(R.layout.main);
>
>         float lat1 = 45.19775f;
>         float lng1 = 6.28418333f;
>         float lat2 = 45.2636667f;
>         float lng2 = 6.17431667f;
>
>         min = new GeoPoint((int)(lat1 * 1E6), (int)(lng1 *
> 1E6));               // bounding rectangle
>         max = new GeoPoint((int)(lat2 * 1E6), (int)(lng2 * 1E6));
>
>         MapView mapView = (MapView) findViewById(R.id.mapView);
>         MapController ctrl = mapView.getController();
>
>         int x = (min.getLongitudeE6() + max.getLongitudeE6())/ 2;  //
> Select map center
>         int y = (min.getLatitudeE6() + max.getLatitudeE6())/ 2;
>
>         ctrl.setCenter(new GeoPoint(y,x));
>         ctrl.setZoom(12);                 //Set scale
>         mapView.setBuiltInZoomControls(true); //Enable zoom controls
>
>         //Add overlay
>         MapOverlay mapOverlay = new MapOverlay();
>         List<Overlay> listOfOverlays = mapView.getOverlays();
>         listOfOverlays.clear();
>         listOfOverlays.add(mapOverlay);
>
>         mapView.invalidate();
>     }
>
>     class MapOverlay extends com.google.android.maps.Overlay
>     {
>         @Override
>         public boolean draw(Canvas canvas, MapView mapView, boolean
> shadow, long when)
>         {
>             super.draw(canvas, mapView, shadow);
>
>             //Translate the GeoPoint to screen pixels
>             Point screenPts = new Point();
>             mapView.getProjection().toPixels(min, screenPts);
>
>             //The overlay image
>             Bitmap bmp = BitmapFactory.decodeResource(getResources(),
> R.drawable.skikaart);
>
>             //Prepare two rectangles (pixels)
>             Point top_left = new Point();
> mapView.getProjection().toPixels(min, top_left);
>             Point bottom_right = new Point();
> mapView.getProjection().toPixels(max, bottom_right);
>
>             Rect src = new Rect( 0,0,bmp.getWidth() - 1,
> bmp.getHeight() - 1 );
>             Rect dst = new Rect( top_left.x,
> bottom_right.y,bottom_right.x,top_left.y );
>
>             canvas.drawBitmap(bmp, src, dst, null);
>
>             return true;
>         }
>     }
>
>     @Override
>     protected boolean isRouteDisplayed() {
>         return false;
>     }
>
> }

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to