gpt4 book ai didi

android - 创建一个 Android GPS 跟踪应用程序

转载 作者:IT王子 更新时间:2023-10-28 23:46:12 26 4
gpt4 key购买 nike

最近,我将 android 开发作为一种爱好,并希望开发一个可以使用 Google map 查找和跟踪用户位置的应用程序。

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

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

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

这是我下面没有导入的代码。

我要做的是创建一个地理点数组。每次位置更改时,都会创建一个新的地理点。然后我尝试使用 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;
}
}

应用程序运行良好,没有错误,但没有绘制路径,位置点只是随着我移动而移动。

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

最佳答案

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

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

调试源代码一定会对你有所帮助。

关于android - 创建一个 Android GPS 跟踪应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5096192/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com