Here is the actual code to show an image on top of the Google map.
Regards
Igor
=======================
package com.map.overlay;

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 MyOverlay extends MapActivity {
        Bitmap          bmp;    // loaded bitmap in memory
        GeoPoint        min;    // top left corner (lat/long)
        GeoPoint        max;    // right bottom corner (lat/long)

        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);

                bmp = BitmapFactory.decodeFile("/sdcard/test.bmp");     // load 
bitmap
(can use JPG,PNG,etc.)
                min = new GeoPoint(37374000,-121913000);                // 
bounding rectangle
                max = new GeoPoint(37375000,-121912000);

                MapView mapView = (MapView) findViewById(R.id.mapView);
                mapView.setSatellite(true);                             // 
switch to the satellite
view
                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(21);                                       // set 
scale
                mapView.setBuiltInZoomControls(true);                   // 
enable zoom controls

                MapOverlay mapOverlay = new MapOverlay();
                List<Overlay> listOfOverlays = mapView.getOverlays();
                listOfOverlays.clear();
                listOfOverlays.add(mapOverlay);

                mapView.invalidate();
        }

        class MapOverlay extends Overlay
        {
                @Override
                public boolean draw(Canvas canvas, MapView mapView, boolean 
shadow,
long when)
                {
                        // convert bitmap's bounding box into pixels
                        Point top_left = new Point();
                        mapView.getProjection().toPixels(min, top_left);
                        Point bottom_right = new Point();
                        mapView.getProjection().toPixels(max, bottom_right);

                        // Prepare two rectangles (pixels)
                        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 );

                        // draw bitmap
                        canvas.drawBitmap( bmp, src, dst, null);
                        return true;
                }
        }

        @Override
        protected boolean isRouteDisplayed() {
                // TODO Auto-generated method stub
                return false;
        }

}

On Dec 8, 12:32 am, sal <suhailb...@gmail.com> wrote:
> Thank guys for your suggestion
>
> @Frank
>
> What do you mean Mobile CAD, i want just a mark up on the JPEG image
> based on predefined locations , thats it.
> i thot Google Map API would provide me better support of doing markup
> if i am able to convert JPEG image into google map
> do u have any good pointer or reference to application which does mark
> up on image.
>
> @Igor
> Buddy, i have developed an application to draw a image on MapView ,
> logic wise i know its right
> somewhere i am messing with certain objects which leads to exception .
> so i requested for  sample code  so that i can cross verify
>
> regards
> Sal
>
> On Dec 8, 6:04 am, ip332 <iprile...@gmail.com> wrote:
>
>
>
>
>
>
>
> > Sol,
> > No offense, but ability to debug the application (especially when you
> > have source code and debugging tools) is one of the most basic things
> > any programmer must have.
> > Yes, Android make "programming" looks like a pretty simple and easy
> > activity however when you don't understand what are you doing and
> > cannot debug the problem - you won't get anything good out of it.
> > They say "There is no replacement for a displacement" about a car
> > engine. Same here - you can't ask for a ready-to-use code to get more
> > or less acceptable result unless you spent certain amount of time,
> > nerves, coffee, etc.
> > Nobody get it from the first time. Google it, ask questions but do not
> > expect someone to solve your problem.
>
> > Anyway I will try to create a sample app but don't know when I'll have
> > time (my current program belongs to the company)
>
> > On Dec 6, 11:54 pm, sal <suhailb...@gmail.com> wrote:
>
> > > thanks for ur concerns,
>
> > > @Frank
> > > I have JPEG sketch of my apartment, getting just geocode of my
> > > apartment doesnt serve my purpose.
> > > i want to do location markup on that JPEG image,  i have stored
> > > location information which i want to mark on the image using android
> > > API's
> > > so i want to convert my image as a google map then use android API's
> > > to mark location on that. let me know if u need more information.
>
> > > @Igor
> > > As i am new to android
> > > can u give me simple example with main activity illustrating on " how
> > > to draw JPEG image on MapView with overlays to mark on the co-ordinate
> > > of the image"
> > > i tried doing it but i am getting NULL exception while using overlays
>
> > > rgds
> > > Sal
>
> > > On Dec 6, 6:46 am, ip332 <iprile...@gmail.com> wrote:
>
> > > > I used the Overlay class for this purpose.
> > > > Here is the main part of the MyOverlay::Draw() method:
> > > >         // convert bitmap's bounding box into pixels
> > > >         Point top_left = new Point();
> > > >         mapView.getProjection().toPixels(min, top_left);
> > > >         Point bottom_right = new Point();
> > > >         mapView.getProjection().toPixels(max, bottom_right);
> > > >         // Prepare two rectangles (pixels)
> > > >         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 );
> > > >         // draw bitmap
> > > >         canvas.drawBitmap( bmp, src, dst, null);
> > > > Since it uses current mapView then zooming and panning are supported
> > > > automatically.
> > > > Obviously you need to know left top (GeoPoint min in the code above)
> > > > and right bottom (GeoPoint max) coordinates for your picture (I used
> > > > Google Earth for this purpose).
> > > > Good luck.
> > > > Igor
>
> > > > On Dec 5, 6:36 am, suhail ahmed <suhailb...@gmail.com> wrote:
>
> > > > > Hi,
>
> > > > > I have JPEG, PDF of sketch of my apartment, i want to make it as a 
> > > > > google
> > > > > map so that i can use Google API's (geocoding, reverse geocoding) on 
> > > > > that.
>
> > > > > may i know the solution for the problem
>
> > > > > regards
> > > > > Sal

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

Reply via email to