Récemment, le développement de Android) était un passe-temps et je cherchais à développer une application permettant de rechercher et de suivre la position d’un utilisateur à l’aide de Google Maps.
Une fois que l'application dispose d'un verrou GPS, elle peut suivre leurs mouvements en traçant un itinéraire à l'aide d'une classe de superposition.
J'ai vu des applications similaires, telles que Mytracks, à code source ouvert, mais elles sont trop complexes pour moi pour le moment.
Idéalement, j'aimerais créer une application qui ressemble à ceci
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, un nouveau géopoint est créé. J'essaie ensuite d'utiliser une boucle for pour parcourir chaque géopoint et tracer un chemin entre eux.
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;
}
}
L'application fonctionne correctement sans erreur, mais il n'y a pas de chemin tracé, le point d'emplacement se déplace simplement lorsque je me déplace.
Toute aide serait grandement appréciée, merci.
Le code source de Android mobile open-gpstracker que vous avez appréciée est disponible ici =.
Vous pouvez extraire le code en utilisant l'application cliente SVN ou via Git:
Déboguer le code source vous aidera sûrement.
En gros, vous devez suivre les étapes pour créer un détecteur de localisation Android app
Maintenant, si vous écrivez chacun de ces modules vous-même, alors nécessite beaucoup de temps et d’efforts . Il serait donc préférable d'utiliser des ressources prêtes déjà gérées.
En utilisant toutes ces ressources, vous pourrez créer une application de détection de localisation sans faille Android.
Vous devez d’abord écouter l’emplacement actuel de l’utilisateur. Vous pouvez utiliser l'une des bibliothèques ci-dessous pour un démarrage rapide.
exemples d'emplacement Google Play
Cette bibliothèque fournit le dernier emplacement connu, les mises à jour d'emplacement
Avec cette bibliothèque, il vous suffit de fournir un objet Configuration avec vos exigences et vous recevrez un emplacement ou un motif d'échec avec tous les éléments décrits ci-dessus.
Utilisez ce référentiel open source de l'application Hypertrack Live pour créer une expérience de partage de localisation en direct au sein de votre application en quelques heures. L'application HyperTrack Live vous permet de partager votre emplacement en direct avec vos amis et votre famille via votre application de messagerie préférée lorsque vous êtes sur le point de vous rencontrer. HyperTrack Live utilise les API et SDK HyperTrack.
Google Maps Android bibliothèque d'utilitaires d'API
Si vous souhaitez ajouter une fonctionnalité de cartes de route dans vos applications, vous pouvez utiliser DrawRouteMaps pour vous faciliter la tâche. C'est lib qui vous aidera à dessiner des cartes d'itinéraire entre deux points LatLng.
Animation simple et fluide pour les itinéraires/polylignes sur Google Maps à l'aide de projections. (WIP)
Ce projet vous permet de calculer la direction entre deux emplacements et d’afficher l’itinéraire sur une carte Google à l’aide de l’API Google Directions.
ne application de démonstration de carte pour un démarrage rapide avec des cartes