android gps轨迹 记录,arcgis android 图上记录gps轨迹

arcigs for android 提供LocationDisplayManager类专门用于获取GPS信息,它可以在地图上展示当前位置变化情况。

public class MainActivity extends Activity {

MapView mMapView;

LocationDisplayManager lDisplayManager = null;

GraphicsLayer gpsGraphicsLayer;

Polyline mPolyline;

int pointCount = 0;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

// after the content of this activity is set

// the map can be accessed from the layout

mMapView = (MapView) findViewById(R.id.map);

ArcGISTiledMapServiceLayer tile = new ArcGISTiledMapServiceLayer("http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineCommunity_Mobile/MapServer");

mMapView.addLayer(tile);

gpsGraphicsLayer = new GraphicsLayer();

mMapView.addLayer(gpsGraphicsLayer);

mPolyline = new Polyline();

mMapView.setOnStatusChangedListener(new OnStatusChangedListener() {

@Override

public void onStatusChanged(Object source, STATUS status) {

if (source == mMapView && status == STATUS.INITIALIZED) {

lDisplayManager = mMapView.getLocationDisplayManager();//获取LocationDisplayManager

lDisplayManager.setAutoPanMode(LocationDisplayManager.AutoPanMode.OFF);

lDisplayManager.setShowLocation(false);//不显示当前位置,坐标系不一致坐标偏移严重

lDisplayManager.setShowPings(false);

lDisplayManager.setAccuracyCircleOn(false);

lDisplayManager.setAllowNetworkLocation(true);

lDisplayManager.setLocationListener(new LocationListener() {

@Override

public void onLocationChanged(Location loc) {

//火星坐标转换

double[] gcj = CoordinateConvert.wgs2GCJ(loc.getLatitude(), loc.getLongitude());

Point wgspoint = new Point(gcj[1], gcj[0]);

Point p = (Point) GeometryEngine.project(wgspoint,

SpatialReference.create(SpatialReference.WKID_WGS84),

mMapView.getSpatialReference());

SimpleMarkerSymbol ptSym = new SimpleMarkerSymbol(Color.BLUE, 15,

SimpleMarkerSymbol.STYLE.CIRCLE);

Graphic graphic = new Graphic(p, ptSym, null);

if (pointCount == 0) {

mPolyline.startPath(p.getX(), p.getY());

mMapView.zoomTo(p, 17);

} else {

mPolyline.lineTo(p.getX(), p.getY());//点画线

mMapView.centerAt(p, true);

}

gpsGraphicsLayer.removeAll();

SimpleLineSymbol lineSym = new SimpleLineSymbol(Color.RED, 10);

Graphic g = new Graphic(mPolyline, lineSym);

gpsGraphicsLayer.addGraphic(g);

pointCount++;

gpsGraphicsLayer.addGraphic(graphic);

}

@Override

public void onProviderDisabled(String arg0) {

}

@Override

public void onProviderEnabled(String arg0) {

}

@Override

public void onStatusChanged(String arg0, int arg1,

Bundle arg2) {

}

}); // Actionlistener

lDisplayManager.start();

}

}

});

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值