Showing posts with label map overlay. Show all posts
Showing posts with label map overlay. Show all posts

Wednesday, April 4, 2012

Map with Multiple bubbles On Long press add new Overlay

Map with Multiple bubbles On Long press add new Overlay



Main.java
---------


public class Main extends MapActivity {

ArrayList<String> name , latitude, longitude;
List<Overlay>               mapOverlays;
MapView mapView;
Resources res;
GestureDetector mGestureDetector;
com.map.click.Main.MapOverlay mapOverlay;
List<Overlay> listOfOverlays;
GeoPoint stationpoint;

double a = 13.084656;
double b = 80.275007;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        mapView = (MapView)findViewById(R.id.mapview1);
        mapView.setBuiltInZoomControls(true);
        mapView.setSatellite(false);
        mapOverlays = mapView.getOverlays();
        res = this.getResources();
        mGestureDetector = new GestureDetector(this, new LearnGestureListener());

        listOfOverlays = mapView.getOverlays();
       
        name = new ArrayList<String>();
        latitude = new ArrayList<String>();
        longitude = new ArrayList<String>();
       
        name.add("Chennai Beach");
        latitude.add("13.091566");
        longitude.add("80.292211");
       
        name.add("Medras HighCort");
        latitude.add("13.08562");
        longitude.add("80.285291");
       
        name.add("Souther Railways(Chennai)");
        latitude.add("13.084656");
        longitude.add("80.275007");
       
        name.add("OCS Bulding");
        latitude.add("13.052393");
        longitude.add("80.250479");
       
        name.add("Gundi Railway station");
        latitude.add("13.007797");
        longitude.add("80.212512");
       
        name.add("T.Nager");
        latitude.add("13.039841");
        longitude.add("80.231899");
       
        stationpoint = new GeoPoint((int) (13.039841 * 1E6),  (int) (80.231899 * 1E6));
        MapOverlay mapOverlay = new MapOverlay(stationpoint);
listOfOverlays.add(mapOverlay);
             
        for(int i= 0; i< name.size(); i++){
        mapView.setStreetView(false);
  stationpoint = new GeoPoint((int) (Double.parseDouble(latitude.get(i)) * 1E6),
  (int) (Double.parseDouble(longitude.get(i)) * 1E6));
  OverlayItem overlayitem1 = new OverlayItem(stationpoint, "","");
  Drawable drawable = this.getResources().getDrawable(R.drawable.pink);              
  HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable, mapView );
       itemizedoverlay.addOverlay(overlayitem1);
       mapOverlays.add(itemizedoverlay);              
  }
       
    }

@Override
protected boolean isRouteDisplayed() {
return false;
}

@Override
    public boolean onTouchEvent(MotionEvent e) {
mGestureDetector.onTouchEvent(e);
        return super.onTouchEvent(e);
       
    }


class MapOverlay extends com.google.android.maps.Overlay{
GeoPoint point;
public MapOverlay(GeoPoint p ) {
point             = p;
}
        @Override
        public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
            super.draw(canvas, mapView, shadow);  
            Bitmap bmp;
            //---translate the GeoPoint to screen pixels---
            Point screenPts = new Point();
            mapView.getProjection().toPixels(point, screenPts);
            //---add the marker---          
            bmp = BitmapFactory.decodeResource(getResources(), R.drawable.epingle_grande_actualite);
            canvas.drawBitmap(bmp, screenPts.x, screenPts.y, null);
            return true;
        }
        @Override
        public boolean onTouchEvent(MotionEvent e, MapView mapView) {
        mGestureDetector.onTouchEvent(e);
            return super.onTouchEvent(e, mapView);            
        }
       
    }

class LearnGestureListener extends GestureDetector.SimpleOnGestureListener{
 @Override
 public boolean onSingleTapUp(MotionEvent ev) {
   Log.d("onSingleTapUp",ev.toString());
   return true;
 }
 @Override
 public boolean onDoubleTap(MotionEvent ev) {
   Log.d("onSingleTapUp",ev.toString());
   mapView.getController().zoomIn();
   return true;
 }

 @Override
 public void onShowPress(MotionEvent ev) {
   Log.d("onShowPress",ev.toString());
 }
 @Override
 public void onLongPress(MotionEvent e) {
 GeoPoint point = mapView.getProjection().fromPixels((int) e.getX(),(int) e.getY());
 double k =0.0;
 //listOfOverlays.removeAll(listOfOverlays);
 mapOverlays.removeAll(mapOverlays);
 //stationpoint = new GeoPoint((int) (13.039841 * 1E6),  (int) (80.231899 * 1E6));
       MapOverlay mapOverlay = new MapOverlay(point);
listOfOverlays.add(mapOverlay);
 for(int i= 0; i< 5; i++){
 GeoPoint stationpoint1 = new GeoPoint((int) ((a + k) * 1E6),  (int) ((b + k) * 1E6));
 OverlayItem overlayitem1 = new OverlayItem(stationpoint1,"","");
Drawable drawable = res.getDrawable(R.drawable.pink);              
HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable, mapView );
       itemizedoverlay.addOverlay(overlayitem1);
       mapOverlays.add(itemizedoverlay);
       k = k + 0.12;
 }
 a = a - 0.5;
 b = b - 0.5;    
   System.out.println("hiiii am tested " + a +"," + b);
 }
 @Override
 public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
   Log.d("onScroll",e1.toString());
   return true;
 }
 @Override
 public boolean onDown(MotionEvent ev) {
   Log.d("onDownd",ev.toString());
   return true;
 }
 @Override
 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
   Log.d("d",e1.toString());
   Log.d("e2",e2.toString());
   return true;
 }
}
}



HelloItemizedOverlay.java
---------------------------


public class HelloItemizedOverlay extends ItemizedOverlay {
MapView             mapView;
Context             mContext;
GeoPoint            destnationPoint, sourcePoint;
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();


public HelloItemizedOverlay(Drawable defaultMarker,MapView map ) {
 super(boundCenterBottom(defaultMarker));
 mapView             = map;
 this.mContext       = map.getContext();
}

public HelloItemizedOverlay(Drawable defaultMarker, Context context) {
 super(defaultMarker);
 mContext = context;
}
public void addOverlay(OverlayItem overlay) {
   mOverlays.add(overlay);
   populate();
}

@Override
protected boolean onTap(int index) {
 return true;
}
@Override
protected OverlayItem createItem(int i) {
return mOverlays.get(i);
}
@Override
public int size() {
return mOverlays.size();
}
@Override
public void draw(android.graphics.Canvas canvas,MapView mapView, boolean shadow)
{
super.draw(canvas, mapView, false);      
}
}


main.xml:
---------


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
   <com.google.android.maps.MapView  
   android:id="@+id/mapview1"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:clickable="true"
   android:apiKey="04khj0ICP9WQ_EfJr_i1Kx_0J7ufBy_nimdLgfQ"/>

</LinearLayout>