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


    }

}

 

转载于:https://my.oschina.net/u/351612/blog/746090

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值