创建一个Android的GPS跟踪应用程序 [英] Create an Android GPS tracking application

查看:164
本文介绍了创建一个Android的GPS跟踪应用程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

最近我采取了Android开发作为一种业余爱好,并希望开发能够找到并使用谷歌地图跟踪用户位置的应用程序。

Recently I've taken up android development as a hobby and was looking to develop an application that can find and track a users position using Google Maps.

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

Once the application has a GPS lock, The application can track their movements by drawing a route using an overlay class.

我已经看到了类似的应用程序,如Mytracks是开源的,但他们对我来说太复杂了现在。

I've seen similar applications like Mytracks that are open source but they're too complex for me right now.

在理想情况下我喜欢创造,看起来像这样这里应用程序

Ideally i'd love to create an application that looks like this Here

他是我下面的code没有进口。

He is my code below without the imports.

我想要做的就是创建geopoints数组。 创建每次位置更改一个新的GeoPoint。 然后,我尝试用一​​个for循环遍历每个GeoPoint对象,并绘制它们之间的路径。

What I'm trying to do is create an array of geopoints. Every time the location changes a new geopoint is created. I then try to use a for loop to iterate through each geopoint and draw a path between them.

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

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

The application runs fine without errors but there is no path drawn, the location dot just moves as i move.

任何帮助将是很大的AP preciated 谢谢你。

Any help would be greatly appreciated Thanks.

推荐答案

该人士$ ​​C $ C为Android移动应用程序的开gpstracker 您AP preciated可用的此处

The source code for the Android mobile application open-gpstracker which you appreciated is available here.

您可以使用SVN客户端应用程序,或通过混帐签出code:

You can checkout the code using SVN client application or via Git:

  • svn签<一href="http://open-gpstracker.google$c$c.com/svn/trunk/">http://open-gpstracker.google$c$c.com/svn/trunk/开放式gpstracker只读
  • 混帐克隆<一href="https://$c$c.google.com/p/open-gpstracker/">https://$c$c.google.com/p/open-gpstracker/
  • svn checkout http://open-gpstracker.googlecode.com/svn/trunk/ open-gpstracker-read-only
  • git clone https://code.google.com/p/open-gpstracker/

调试源$ C ​​$ C一定会帮助你。

Debugging the source code will surely help you.

这篇关于创建一个Android的GPS跟踪应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆