2011-02-23 55 views
46

最近,我已经采取了Android开发作为一种业余爱好,并希望开发一个应用程序,可以发现并跟踪使用谷歌地图用户位置。创建一个Android GPS跟踪应用程序

一旦应用程序有一个GPS锁定,应用程序可以通过使用覆盖类绘制路径跟踪他们的行踪。

我见过像Mytracks是开源的类似的应用程序,但他们目前正对我来说太复杂。

理想我很乐意来创建看起来像这样

他是我下面的代码,而无需进口申请。

我想要做的就是创建geopoints的数组。 每次位置更改时都会创建一个新的地址。 然后我尝试使用for循环遍历每个地址并在它们之间绘制一条路径。

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

应用程序运行没有错误,但罚款没有绘制路径,位置点只是移动作为我谨。

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

+2

我对你的代码感兴趣,我认为它对简单的android gps映射很有帮助。 我想问你是否找到了解决上述问题的解决方案? – 2011-09-29 07:36:14

+0

@david帮助我,我有像你的问题一样的问题。 – Roadies 2012-11-30 09:58:24

+0

是啊......我也是......我也很感兴趣// @大卫,你还在吗? – gumuruh 2014-08-23 03:49:32

回答

22

Android移动应用程序的源代码open-gpstracker您赞赏的是here

可以使用SVN客户端应用程序,或通过GIT中检出代码:

调试源代码将一定帮助你。

+0

可以请你告诉me.how添加http客户端,HTTP哑剧,路标.....项目gpstracker – bhargavkumar040 2012-03-20 08:47:35

+0

有任何教程为开发代码@chiranjib或@ToonKrijthe? – gumuruh 2014-08-23 03:50:06

+0

无法结帐代码。 git和svn url都不起作用 – 2017-03-04 03:19:45