2011-03-09 2 views
3

Possible en double:
Is there an API for Google Maps navigation in Android?je veux dessiner chemin entre plusieurs geopoins dans Android

Récemment, j'ai repris le développement android comme un passe-temps et cherchais à développer une application qui peut trouver et suivre la position d'un utilisateur en utilisant Google Maps. Une fois que l'application dispose d'un verrou GPS, l'application peut suivre ses mouvements en dessinant un itinéraire à l'aide d'une classe de superposition.

J'ai déjà vu des applications similaires comme Mytracks qui sont open source mais elles sont trop complexes pour moi en ce moment.

Il est mon code ci-dessous sans les importations.

Ce que j'essaie de faire est de créer un tableau de géopoints. Chaque fois que l'emplacement change, une nouvelle géopoint est créée. J'essaie ensuite d'utiliser une boucle for pour parcourir chaque géopoint et tracer un chemin entre eux.

Idéalement j'aimerais créer une application qui ressemble à cette image

enter image description here

public class Tracking extends MapActivity implements LocationListener { 

    LocationManager locman; 
    LocationListener loclis; 
    Location Location; 
    private MapView map; 

    List<GeoPoint> geoPointsArray = new ArrayList<GeoPoint>(); 
    private MapController controller; 
    String provider = LocationManager.GPS_PROVIDER; 
    double lat; 
    double lon; 


    @Override 
     public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.map); 
     initMapView(); 
     initMyLocation(); 
     locman = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
     //locman.requestLocationUpdates(provider,60000, 100,loclis); 
     //Location = locman.getLastKnownLocation(provider); 

     } 
    /** Find and initialize the map view. */ 
     private void initMapView() { 
     map = (MapView) findViewById(R.id.map); 
     controller = map.getController(); 
     map.setSatellite(false); 
     map.setBuiltInZoomControls(true); 
     } 

     /** Find Current Position on Map. */ 
     private void initMyLocation() { 
     final MyLocationOverlay overlay = new MyLocationOverlay(this, map); 
     overlay.enableMyLocation(); 
     overlay.enableCompass(); // does not work in emulator 
     overlay.runOnFirstFix(new Runnable() { 
      public void run() { 
       // Zoom in to current location 
       controller.setZoom(24); 
       controller.animateTo(overlay.getMyLocation()); 
      } 
     }); 
     map.getOverlays().add(overlay); 
     } 

    @Override 
    public void onLocationChanged(Location location) { 
     if (Location != null){ 
     lat = Location.getLatitude(); 
      lon = Location.getLongitude(); 
      GeoPoint New_geopoint = new GeoPoint((int)(lat*1e6),(int)(lon*1e6)); 
      controller.animateTo(New_geopoint); 

     } 

    } 
    class MyOverlay extends Overlay{ 
     public MyOverlay(){ 
     } 
     public void draw(Canvas canvas, MapView mapv, boolean shadow){ 
     super.draw(canvas, mapv, shadow); 

     Projection projection = map.getProjection(); 
     Path p = new Path(); 
     for (int i = 0; i < geoPointsArray.size(); i++) { 
     if (i == geoPointsArray.size() - 1) { 
      break; 
     } 
     Point from = new Point(); 
     Point to = new Point(); 
     projection.toPixels(geoPointsArray.get(i), from); 
     projection.toPixels(geoPointsArray.get(i + 1), to); 
     p.moveTo(from.x, from.y); 
     p.lineTo(to.x, to.y); 
     } 
     Paint mPaint = new Paint(); 
     mPaint.setStyle(Style.STROKE); 
     mPaint.setColor(0xFFFF0000); 
     mPaint.setAntiAlias(true); 
     canvas.drawPath(p, mPaint); 
     super.draw(canvas, map, shadow); 
    } 
} 

    @Override 
    public void onProviderDisabled(String provider) { 
     // TODO Auto-generated method stub 

    } 
    @Override 
    public void onProviderEnabled(String provider) { 
     // TODO Auto-generated method stub 

    } 
    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
     // TODO Auto-generated method stub 

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

Quelle est la question ici? –

+0

je wan pour suivre mon appareil Android lorsque son emplacement change et je veux voir son chemin .. –

+0

Vous devez poser une question spécifique: http://stackoverflow.com/faq –

Répondre

0

Lire ma réponse HERE.

Ce que vous regardez est de créer un service android qui est déclenché chaque fois que votre emplacement change et enregistre le nouvel emplacement, probablement à un db. Créez également une application qui utilisera les données de la base de données pour dessiner un chemin sur une carte.

Questions connexes