2012-03-27 17 views
5

i Benutzer lassen eine Markierung setzen, und wenn er einen anderen Marker setzen werde ich die weitere Markierung entfernen dann:die GeoPoint an eine andere Aktivität senden

ich will die GeoPoint für diesen Marker nehmen und es an eine andere Aktivität senden als String dies ist mein Code,

wie kann ich die markerGP = pt; markerGP Vorsatz an eine andere Aktivität senden

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) { 
     } 
    } 
    } 

können Sie meinen Code beheben? Ich bin reeally hier stecken !!

Antwort

1

versuchen, das zu tun:

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

Hoffnung helfen.

+0

wo soll ich es hinstellen? – Maha

Verwandte Themen