Aggiorna Marker Posizione e disegna il path su Google Maps quando si cammina / guida in Android

Vorrei creare una funzionalità come Google Maps. Voglio aggiornare il mio marker di posizione each volta che una persona inizia a camminare / guidare. Sto pensando di utilizzare il metodo OnLocationChange di LocationListner ma non sono sicuro. Mi piace anche disegnare il path con l'aggiornamento della posizione su Google Maps.

Tutti i suggerimenti sono benvenuti.

  • come get il valore del dialer in applicazione android?
  • Devo utilizzare AsyncTask o IntentService per la mia applicazione?
  • OnItemClickListener e OnClickListener in ListView
  • L'API ICS di Android ha un equivalente nativo per il supporto di ViewPager lib?
  • Qualsiasi modo per eseguire comandi di shell su android in modo programmato?
  • android: Rileva il livello sonoro
  • IthemeszedOverlay: –

    public class LocationOverlay extends IthemeszedOverlay<OverlayItem>{ private List<OverlayItem> myOverlays; Path path; static int cnt = -1; public LocationOverlay(Drawable defaultMarker) { super(boundCenterBottom(defaultMarker)); System.out.println("Normal..."); myOverlays = new ArrayList<OverlayItem>(); } public void addOverlay(OverlayItem overlay) { System.out.println("Add Overlay called"); myOverlays.add(overlay); populate(); cnt++; } @Override protected OverlayItem createItem(int i) { return myOverlays.get(i); } public void removeItem(int i) { myOverlays.remove(i); populate(); } @Override public int size() { return myOverlays.size(); } @Override public void draw(Canvas canvas, final MapView mapView, boolean shadow) { if (shadow) { paint.setDither(true); paint.setColor(Color.RED); paint.setStyle(Paint.Style.STROKE); paint.setStrokeJoin(Paint.Join.ROUND); paint.setStrokeCap(Paint.Cap.ROUND); paint.setStrokeWidth(4); path = new Path(); Point point1 = new Point(); Projection projection = mapView.getProjection(); if (myOverlays.size() > 1) { System.out.println(">>>>>>>>>>>"); for (int i = 0, j=i; i < myOverlays.size(); i++) { Point point1 = new Point(); Point point2 = new Point(); projection.toPixels(myOverlays.get(i).getPoint(), point1); System.out.println(">>>>>>>>>>>"); projection.toPixels(myOverlays.get(j++).getPoint(), point2); System.out.println("Point == " + j); path.moveTo(point2.x, point2.y); path.lineTo(point1.x, point1.y); canvas.drawPath(path, paint); super.draw(canvas, mapView, shadow); } } } canvas.drawPath(path, paint); super.draw(canvas, mapView, shadow); } } 

    NOTA – il metodo di disegno viene richiamato più volte per una singola posizioneChanged.

    EDIT: –

    Sono in grado di disegnare il path each volta che c'è una posizione cambiata fuoco di evento, ma sto affrontando un piccolo problema lì. Il suo path di disegno anche dalla radice each volta. Voglio che dall'ultimo posto dovrebbe iniziare a disegnare il path (cioè collegandosi dall'ultima alla posizione successiva). Sto collegando un'image per una migliore comprensione.

    immettere qui la descrizione dell'immagine

    Dall'image si può vedere che il punto di partenza è collegato anche all'ultimo punto. Non voglio questo. Qualche idea su questo.

  • Android: Visualizzazione personalizzata con riferimento di object da attrs.xml, sempre null
  • Generare interi casuali da Min a Max?
  • Posso ricevere dati da preferenze condivise all'interno di un servizio?
  • Custom build.xml di Android per rinominare il pacchetto manifesto
  • Confuso circa Google GCM XMPP
  • API per la configuration di indirizzi IP statici in un'applicazione Android
  • One Solution collect form web for “Aggiorna Marker Posizione e disegna il path su Google Maps quando si cammina / guida in Android”

    La posizione corrente può essere facilmente disegnata con MyLocationOverlay . Quello che devi fare è aggiungere questa sovrapposizione al tuo MapView. Qualcosa di simile a:

     mapView.addOverlay(new MyLocationOverlay(context, mapView)); 

    Il punto di posizione predefinito verrà disegnato automaticamente e verrà aggiornato non appena si sposta

    Con l'itinerario è un po 'più complicato, ma ancora non esiste una scienza sul razzo. Quello che devi fare è quello di estendere la class Overlay e implementare la logica draw() . È necessario tenere traccia dei GeoPoints che hai viaggiato e proiettarli su una mappa (nel draw() di sovrapposizione draw() puoi chiedere il tuo mapView per un'istanza di ProjectiongetProjection() . Puoi utilizzare questa proiezione per mappare GeoPoints alle coordinate della mappa). Non appena hai l'elenco di GeoPoints, puoi creare un path e disegnare questo path su una canvas

    L'esempio semplificato come disegnare il path su una mappa (ci sono alcune classi personalizzate che utilizzo nel mio progetto, ma dovresti avere un'idea):

     Path path; @Override public void draw(Canvas canvas, final MapView mapView, boolean shadow) { Projection proj = mapView.getProjection(); updatePath(mapView,proj); canvas.drawPath(path, mPaint); } protected void updatePath(final MapView mapView, Projection proj) { path = new Path(); proj.toPixels(mPoints.get(0).point, p); path.moveTo(px, py); for(RouteEntity.RoutePoint rp : mPoints) { proj.toPixels(rp.point, mPoint); path.lineTo(mPoint.x, mPoint.y); } } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.