2011-07-10 2 views
1

Je suis nouveau sur Android et je viens de regarder dans l'API de toile. J'ai actuellement une classe d'activité appelée "MyMap" et une ViewClass appelée "MapView" (qui étend la vue). L'activité MyMap définit l'affichage du contenu sur MapView et à l'intérieur de MapView. Je crée un canevas avec une image bitmap d'une carte et je trace ensuite un cercle sur la carte en fonction des coordonnées GPS actuelles du mobile. Je veux savoir comment effectuer un rappel à la méthode draw() chaque fois que les coordonnées GPS changent? aussi ce code va-t-il dans l'activité MyMap ou dans MapView?Android Canvas - Rappels pour dessiner un point et le repositionner en fonction du mouvement GPS

+0

Demandez-vous comment obtenir des mises à jour GPS, ou comment faire quelque chose une fois que vous obtenez une mise à jour GPS? Aussi un peu confus sur pourquoi vous créeriez une toile pour mettre une carte sur une mapview? Mapview est pour Google Maps et fait tout le dessin de carte pour vous. – Idistic

+0

Je n'utilise pas googlemaps. Je veux charger une image bitmap d'une mosaïque de carte. Je veux ensuite tracer un marqueur «vous-êtes-ici» sur cette image de carte. Chaque fois que le mobile se déplace et modifie les coordonnées GPS, je veux ensuite que la carte pour mettre à jour le marqueur vous-êtes-ici et se déplacer par rapport à l'emplacement des téléphones – cptham

Répondre

0

Ce que vous devez faire est d'abord configurer un écouteur de GPS et de répondre à cela, vous pouvez trouver des informations à ce sujet ici LocationManager

Il ressemblerait à quelque chose comme ça. Gardez à l'esprit que le GPS suce la batterie, il y a des façons de le faire mieux, mais voici la viande de celui-ci, plus ou moins

Une fois que vous avez cette configuration juste faire ce que vous devez faire dans l'auditeur OnLocationChanged

CODE SNIPPET - pas complète

import android.location.LocationListener; 
import android.location.LocationManager; 
import android.location.LocationProvider; 

public class gps extends Activity { 

    private LocationManager locManager = null; 

     public void onCreate(Bundle state) { 
      super.onCreate(state); 

      locManager = (LocationManager)App.getSystemService(Context.LOCATION_SERVICE); 
     } 

     LocationListener onLocationChange=new LocationListener() { 
     public void onLocationChanged(Location loc) { 

        // DO SOMETHING HERE with the updated location information to change your map 

      } 
     } 

     public onResume() { 
      startGPS(1000,1); // Every second or when we move 1 meter 
     } 

     public onPause() { 
      stopGPS(); 
     } 

     private boolean startGPS(long interval, float meterTrigger) 
    { 

     if (!locManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) 
      return false; 



          locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,interval,meterTrigger,onLocationChange); 



       return true; 
     } 

     public void stopGPS() { 
     locManager.removeUpdates(onLocationChange); 
    } 

Peinture cercle - vous devez déterminer le positionnement et le rayon

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 

    float x = 0; 
    float y = 0; 
    float r = 0; 

    paint = new Paint(Paint.ANTI_ALIAS_FLAG); // You can cache this higher up and reuse it 
    paint.setColor(0xFFFF0000); 
    canvas.drawCircle(x, y, r, paint); 
} 
+0

merci. Y at-il de bons tutoriels sur le dessin sur une image. Essentiellement je dessine juste sur une image chaque fois que le gps du téléphone change .. – cptham

+0

@cptham voulez-vous dessiner (comme dessiner un cercle etc.) ou voulez-vous superposer un bitmap au-dessus de l'autre? – Idistic

+0

Je veux dessiner un cercle qui représente l'emplacement des utilisateurs. Vu littéralement dessiner un cercle sur une image bitmap (qui se trouve être une carte) – cptham

Questions connexes