创build一个Android的GPS跟踪应用程序

最近,我将Android开发视为一种业余爱好,希望开发一款能够使用Google地图查找和跟踪用户位置的应用程序。

一旦应用程序有GPSlocking,应用程序可以通过使用覆盖类绘制路线来跟踪他们的移动。

我见过类似的应用程序,如Mytracks,它们是开源的,但现在对我来说太复杂了。

理想情况下,我很想创build一个看起来像这样的应用程序

他是我的代码下面没有import。

我想要做的是创build一个地理点数组。 每当位置发生变化时,都会创build一个新的地址。 然后我尝试使用for循环遍历每个地址,并在它们之间绘制path。

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; } } 

该应用程序运行良好,没有错误,但没有path绘制,位置点只是移动,因为我移动。

任何帮助将不胜感激谢谢。

您赞赏的Android移动应用程序open-gpstracker的源代码可以在这里find 。

您可以使用SVN客户端应用程序或通过Git检出代码:

debugging源代码一定会帮助你。