Hi Arun 
I am giving you two code snippets from my application in which i used three 
different colored markers. One is myOverlay Class Which will be the inner 
class of your Map Screen Activity and another code is a function in your 
activity which creates itemized overlay objects according to need of 
different colored markers and adds that overlay to map... Hope this will 
help you... :-)

MyOverlay Class -->
------------------------------------------------------------------------------------------------------------------------------------------------------------------------

class MyOverlay extends ItemizedOverlay<OverlayItem> {

        private ArrayList<OverlayItem> mOverlays = new 
ArrayList<OverlayItem>();
        private MapScreenActivity currentContext = null;
        private GeoPoint clickedOverlayGeoPoint;
        private Point point = null;
        private GeoPoint geoPoint = null;
        private Point pointTap = null;
        private Point pointScreenOverlay = null;
        private Point mapCenterPoint = null;
        private Drawable marker = null;
        private Projection projection = null;
        View view = null;
        private LayoutInflater inflater;
        private TextView  txtAddress;
        private ImageView imgBlueArrow;
        
        public MyOverlay(Drawable defaultMarker) {
            super(boundCenter(defaultMarker));
            marker = defaultMarker;
            populate();
        }

        public MyOverlay(Drawable defaultMarker, Context context) {
            super(boundCenter(defaultMarker));
            inflater = LayoutInflater.from(context);
            view = inflater.inflate(R.layout.popup ,null);
            txtAddress = (TextView) view.findViewById(R.id.txtAddress);
            imgBlueArrow = (ImageView) view.findViewById(R.id.imgBlueArrow);
            marker = defaultMarker;
            
            imgBlueArrow.setOnClickListener(new OnClickListener() {
                
                public void onClick(View v) {
                    drawPath(new 
GeoPoint((int)(ConstantData.latitude*1000000), 
(int)(ConstantData.longitude*1000000)), clickedOverlayGeoPoint, Color.RED, 
mapView);
                    mapView.invalidate();
                }
            });
        }

        @Override
        public void draw(Canvas canvas, MapView mapView, boolean shadow) {
            super.draw(canvas, mapView, false);

            //    drawing numbers for overlapped dots
            for(int i=0;i<arrayList.size();i++){        
                // get projection to convert geopoint to screen point
                geoPoint = new 
GeoPoint((int)(arrayList.get(i).getLatitude()*1000000), 
(int)(arrayList.get(i).getLongitude()*1000000));            
                projection = mapView.getProjection();
                Point point = new Point();        
                projection.toPixels(geoPoint, point);
            }
            
        }

        public void addOverlay(MapScreenActivity currentContext, Record 
record) {
            this.currentContext = currentContext;
            geoPoint = new GeoPoint((int) (record.getLatitude() * 1E6),
                    (int) (record.getLongitude() * 1E6));
            OverlayItem overlay = new OverlayItem(geoPoint, "Marker", 
"Marker Text");
            overlay.setMarker(marker);
            mOverlays.add(overlay);
            populate();
        }

        @Override
        protected OverlayItem createItem(int i) {
            // TODO Auto-generated method stub
            return mOverlays.get(i);

        }

        @Override
        public int size() {
            // TODO Auto-generated method stub
            return mOverlays.size();

        }
        
        @Override
        public boolean onTap(GeoPoint p, MapView mapView) {
            
            try {
                pointTap = mapView.getProjection().toPixels(p, null);
                if (popup != null && popup.isShowing()) {
                    popup.dismiss();
                    putRecordOverlays();
                    putUserOverlay();
                }
            } catch (Exception e) {
                Log.e("-----", e.toString());
            }
            return super.onTap(p, mapView);
        }

        @Override
        protected boolean onTap(int index) {

            geoPoint = mOverlays.get(index).getPoint();
            pointScreenOverlay = mapView.getProjection().toPixels(
                    geoPoint, null);

            Rect overlayRect = new Rect();
            overlayRect.top = (pointScreenOverlay.y - 
marker.getIntrinsicHeight() / 2) - 10;
            overlayRect.left = (pointScreenOverlay.x - 
marker.getIntrinsicWidth() / 2) - 10;
            overlayRect.right = (pointScreenOverlay.x + 
marker.getIntrinsicWidth() / 2) + 10;
            overlayRect.bottom = (pointScreenOverlay.y + 
marker.getIntrinsicHeight() / 2) + 10;
            

            if (overlayRect.contains(pointTap.x, pointTap.y)) {
                try {
                    OverlayItem item = mOverlays.get(index);
                    geoPoint = item.getPoint();
                
                    
                    for(int i=0;i<arrayList.size();i++){
                        if (geoPoint.getLatitudeE6() == 
(long)(arrayList.get(i).getLatitude()*1000000) && geoPoint.getLongitudeE6() 
== (long)(arrayList.get(i).getLongitude()*1000000)) {
                            
                            popup = new PopupWindow(view,200,45);
                            point = new Point();
                            
mapView.getProjection().toPixels(geoPoint,point);
                            popup.setOutsideTouchable(true);
                            putRecordOverlays();
                            putUserOverlay();
                            animateTo(geoPoint);
                            clickedOverlayGeoPoint = geoPoint;
                            GeoPoint mapCenterGeoPoint = 
currentContext.mapView.getMapCenter();
                            mapCenterPoint = mapView.getProjection()
                                    .toPixels(mapCenterGeoPoint, null);
                            
txtAddress.setText(arrayList.get(i).getStreet1());
                            popup.showAtLocation(mapView,
                                    Gravity.NO_GRAVITY, 
mapCenterPoint.x-100,
                                    mapCenterPoint.y+20);
                            
                        }
                    }
                    
                    
                }catch(Exception e){
                    Log.e(",SITELOCATOR-MYOVERLAY",e.toString());
                }    
            }    
                    
            
            return true;
        }
            

        public void ShowMessage(String title, String message) {
            AlertDialog.Builder b = new AlertDialog.Builder(currentContext);
            AlertDialog a = b.create();
            a.setTitle(title);
            a.setMessage(message);
            a.setButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface arg0, int arg1) {

                }
            });

            a.show();
        }
    }

----------------------------------------------------------------------------------------------------------------------------------------------------------------


function i used to put markers in activity -->
----------------------------------------------------------------------------------------------------------------------------------------------------------------

  private void putRecordOverlays(){
        try{
            mapOverlays.clear();
            drawableYellowCFNPin = 
this.getResources().getDrawable(R.drawable.yellow_cfn_pin);
            drawableGreenCFNPin = 
this.getResources().getDrawable(R.drawable.green_cfn_pin);
            drawableRedCFNPin = 
this.getResources().getDrawable(R.drawable.red_cfn_pin);
            mapOverlays = mapView.getOverlays();

            for(int i=0;i<arrayList.size() ; i++){
                if(arrayList.get(i).getType().equalsIgnoreCase("CFN")){
                    itemizedOverlay = new 
MyOverlay(drawableGreenCFNPin,MapWebViewActivity.this);
                }else if(arrayList.get(i).getType().equalsIgnoreCase("FW")){
                    itemizedOverlay = new 
MyOverlay(drawableYellowCFNPin,MapWebViewActivity.this);
                }else 
if(arrayList.get(i).getType().equalsIgnoreCase("FCF")){
                    itemizedOverlay = new 
MyOverlay(drawableRedCFNPin,MapWebViewActivity.this);
                }
                
itemizedOverlay.addOverlay(MapWebViewActivity.this,arrayList.get(i));
                mapOverlays.add(itemizedOverlay);
            }
            
            mapView.invalidate();
            
        }catch(Exception e){
            e.printStackTrace();
        }

    }

-- 
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