2012-03-27 22 views
5

मैं उपयोगकर्ता एक मार्कर डाल करने के लिए जाने के लिए GeoPoint भेज सकते हैं और अगर वह एक और मार्कर डाल मैं निकाल देंगे एक और मार्कर तो:एक और गतिविधि

मैं इस मार्कर का geoPoint लेने के लिए और एक और गतिविधि को भेजने के लिए करना चाहते हैं स्ट्रिंग के रूप में यह मेरा कोड है,

कैसे मैं एक और गतिविधि

public class AndroidLocationActivity extends MapActivity { 

private MapView map=null; 
    private MyLocationOverlay me=null; 
    private LocationManager locationManager; 
    private GeoPoint markerGP = null; 
    private boolean markerAdded = false; 

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

     map=(MapView)findViewById(R.id.mapview); 

     map.getController().setCenter(getPoint(40.76793169992044, 
         -73.98180484771729)); 
     map.getController().setZoom(17); 
     map.setBuiltInZoomControls(true); 

     Drawable marker=getResources().getDrawable(R.drawable.marker); 

     marker.setBounds(0, 0, marker.getIntrinsicWidth(), 
         marker.getIntrinsicHeight()); 

     map.getOverlays().add(new SitesOverlay(marker)); 

     myLocation(); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 

     me.enableCompass(); 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     // markerAdded = false; 
     me.disableCompass(); 
    } 

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

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_S) { 
       map.setSatellite(!map.isSatellite()); 
       return(true); 
     } 
     else if (keyCode == KeyEvent.KEYCODE_Z) { 
       map.displayZoomControls(true); 
       return(true); 
     } 

     return(super.onKeyDown(keyCode, event)); 
    } 

    public void myLocation() 
    { 

     locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 
         0, new GeoUpdateHandler()); 

     me = new MyLocationOverlay(this, map); 
     me.enableMyLocation(); 
     map.getOverlays().add(me); 
     map.invalidate(); 

     me.runOnFirstFix(new Runnable() { 
       public void run() { 
         map.getController().animateTo(
             me.getMyLocation()); 
       } 
     }); 
    } 

    private GeoPoint getPoint(double lat, double lon) { 
     return(new GeoPoint((int)(lat*1000000.0), 
         (int)(lon*1000000.0))); 
    } 

     private class SitesOverlay extends ItemizedOverlay<OverlayItem> { 
     private List<OverlayItem> items=new ArrayList<OverlayItem>(); 
     private Drawable marker=null; 
     private OverlayItem inDrag=null; 
     private ImageView dragImage=null; 
     private int xDragImageOffset=0; 
     private int yDragImageOffset=0; 
     private int xDragTouchOffset=0; 
     private int yDragTouchOffset=0; 

     private boolean moved = true; 

     public SitesOverlay(Drawable marker) { 
       super(marker); 
       this.marker=marker; 

       dragImage=(ImageView)findViewById(R.id.drag); 
       xDragImageOffset=dragImage.getDrawable().getIntrinsicWidth()/2; 
       yDragImageOffset=dragImage.getDrawable().getIntrinsicHeight(); 

       populate(); 
     } 

     @Override 
     protected OverlayItem createItem(int i) { 
       return(items.get(i)); 
     } 

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

       boundCenterBottom(marker); 
     } 

     @Override 
     public int size() { 
       return(items.size()); 
     } 

      @Override 
      public boolean onTouchEvent(MotionEvent event, MapView mapView) { 
       final int action=event.getAction(); 
       final int x=(int)event.getX(); 
       final int y=(int)event.getY(); 

       GeoPoint pt=map.getProjection().fromPixels(x-xDragTouchOffset, 
           y-yDragTouchOffset); 

       boolean result=false; 

       if (action==MotionEvent.ACTION_DOWN) { 
         moved = false; 

         for (OverlayItem item : items) { 
           Point p=new Point(0,0); 
           inDrag = null; 
           map.getProjection().toPixels(item.getPoint(), p); 

           if (hitTest(item, marker, x-p.x, y-p.y)) { 
             result=true; 
             inDrag=item; 
             items.remove(inDrag); 
             populate(); 

             xDragTouchOffset=0; 
             yDragTouchOffset=0; 

             setDragImagePosition(p.x, p.y); 
             dragImage.setVisibility(View.VISIBLE); 

             xDragTouchOffset=x-p.x; 
             yDragTouchOffset=y-p.y; 

             break; 
           } 
         } 
       } 
       else if (action==MotionEvent.ACTION_MOVE) { 
         moved = true; 
         if(inDrag!=null) 
         { 
           setDragImagePosition(x, y); 
           result=true; 
         } 

       } 
       //Drop dragged marker 
       else if (action==MotionEvent.ACTION_UP && inDrag!=null) { 
         dragImage.setVisibility(View.GONE); 

         OverlayItem toDrop=new OverlayItem(pt, inDrag.getTitle(), 
             inDrag.getSnippet()); 

         items.add(toDrop); 
         populate(); 

         inDrag=null; 
         result=true; 
       } 
       //Add new marker to the map 
       else if (action==MotionEvent.ACTION_UP && inDrag == null) { 

         if(!markerAdded && !moved) 
         { 
           //GeoPoint `pt` 
           markerGP = pt; 
           OverlayItem toDrop=new OverlayItem(pt, "TITLE", "SNIPPET"); 

           items.add(toDrop); 
           populate(); 

           markerAdded = true; 
           inDrag=null; 
           result=true; 
         } 
       } 


       return(result || super.onTouchEvent(event, mapView)); 
     } 

     private void setDragImagePosition(int x, int y) { 
       RelativeLayout.LayoutParams lp= 
         (RelativeLayout.LayoutParams)dragImage.getLayoutParams(); 

       lp.setMargins(x-xDragImageOffset-xDragTouchOffset, 
           y-yDragImageOffset-yDragTouchOffset, 0, 0); 
       dragImage.setLayoutParams(lp); 
     } 
    } 

    public class GeoUpdateHandler implements LocationListener { 

     @Override 
     public void onLocationChanged(Location location) { 
       int lat = (int) (location.getLatitude() * 1E6); 
       int lng = (int) (location.getLongitude() * 1E6); 
       GeoPoint point = new GeoPoint(lat, lng); 
       map.getController().animateTo(point); //map.getController().setCenter(point); 

     } 

     @Override 
     public void onProviderDisabled(String provider) { 
     } 

     @Override 
     public void onProviderEnabled(String provider) { 
     } 

     @Override 
     public void onStatusChanged(String provider, int status, Bundle extras) { 
     } 
    } 
    } 

के इरादे से markerGP = pt; markerGP भेज सकते हैं आप मेरे कोड को ठीक कर सकते हैं? मैं यहाँ वास्तव में अटक गया हूँ !! ऐसा करने के लिए

उत्तर

1

प्रयास करें:

items = new(); 
    items.add(toDrop); 
    populate(); 

आशा में मदद मिलेगी।

+0

मुझे इसे कहां रखना चाहिए? – Maha

संबंधित मुद्दे