2012-05-30 61 views
0

我有两个GPS坐标,下面是我的代码,我试图用一条线连接它们。我发现这个线程:Connect points on map with lines,但我不认为我完全理解它。有人能更清楚地解释它吗? (理想情况下,我想它所以我每次点击标记时间放在那么线连接到它。)如何绘制从一个GPS位置到另一个位置的线?

这里是我的代码:

package draw.live; 

import java.util.ArrayList; 
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.Color; 
import android.graphics.Paint; 

import android.graphics.Point; 
import android.os.Bundle; 
import android.view.MotionEvent; 

import android.widget.Button; 

public class start extends MapActivity{ 
    // MapActivity variables 
    MapController mCont; 
    GeoPoint geo; 
    MapView mapV; 
    Button Draw, Stop; 

    /* Called when the activity is first created. references my start.xml*/ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.start); 

     /* 
     * Allows zoom controls on the screen along with 
     * zoom functionality. 
     */ 
     mapV = (MapView) findViewById(R.id.mapview); 
     mapV.displayZoomControls(true); 
     mapV.setBuiltInZoomControls(true); 

     //longitude and latitude 
     double lat = 32.87728; 
     double lng = -117.22961; 

     //Are equation to micro Degree's  
     geo = new GeoPoint ((int) (lat *1E6), (int) (lng * 1E6)); 

     //Gets are map and sets a Fixed Zoom 15 
     mCont = mapV.getController(); 
     mCont.animateTo(geo); 
     mCont.setZoom(15); 

     //Add a location marker 
     mCont.animateTo(geo); 
     MapOverlay mapOverlay = new MapOverlay(); 
     List<Overlay> listOfOverlays = mapV.getOverlays(); 
     listOfOverlays.clear(); 
     listOfOverlays.add(mapOverlay);   

     mapV.invalidate(); 
    } 

    public class MapOverlay extends com.google.android.maps.Overlay 
    {   
     /* 
     * Class for adding Marker Overlay for every time it is clicked. 
     */ 

     public class MarkerOverlay extends Overlay{ 
      private GeoPoint geo; 
      public MarkerOverlay(GeoPoint p){ 
       this.geo = p; 
      } 

      //Creates my canvas to draw on my Map 
      @Override 
      public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when){ 

       Paint paint; 
       super.draw(canvas, mapView, shadow);     

       //Translate the GeoPoint to screen pixels 
       Point screenPts = new Point(); 
       mapView.getProjection().toPixels(geo, screenPts);      

       //Adds a Marker on the map 
       Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);    
       canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null);      
       return true;  
      } 
     } 

     public boolean onTouchEvent (MotionEvent event, MapView mapView) 
     { 
     /* 
      * Translate to Geo Pixels, Along with everytime you click adds marker. 
      */ 
     Point screenPts = new Point(); 
     mapView.getProjection().toPixels(geo, screenPts); 
      if (event.getAction() == 1) {     
       GeoPoint geo = mapView.getProjection().fromPixels(
         (int) event.getX(), 
         (int) event.getY()); 
         /*Toast.makeText(getBaseContext(), 
          geo.getLatitudeE6()/1E6 + "," + 
          geo.getLongitudeE6() /1E6 , 
          Toast.LENGTH_SHORT).show(); */      
         mapView.getOverlays().add(new MarkerOverlay(geo)); 
         mapView.invalidate(); 

      }        
      return false; 
     } 
    } 

    //Not used yet.... 
    /*public void onClick(View v) { 

     //Check's to see if button 3 is clicked 
     if (v.getId() == R.id.button3){ 


     } 
     // Checks to see if button4 button has been clicked 
     if (v.getId() == R.id.button4){ 
     } 
    }*/ 

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

回答

相关问题