一、ArcGIS for Android的简介
ArcGIS是由Esri公司开发的一套地理信息系统软件,ArcGIS for Android则是其Android平台下的应用程序。ArcGIS for Android提供了一系列帮助开发人员构建具有丰富地图功能的Android应用程序的工具和API,不但可以呈现地图、地理位置和位置感知数据,还可以处理各种交互行为、可定制化样式和控件,总之,ArcGIS for Android为开发人员提供了丰富的地图应用开发工具。
二、ArcGIS for Android的主要功能
1、地图:ArcGIS for Android支持加载和显示各种符号、标记、线条和图形,还可以在地图上添加影像、标记、图层及交互控件等。它还支持在地图上添加事件和处理各种地图事件。
2、位置感知:支持获取设备的详细位置信息,包括高程、经纬度等,并可以将其结合到地图上进行显示。还可以使用位置服务来查询所需的离线地图和其他资源。
3、交互:ArcGIS for Android支持各种交互操作,例如放大、缩小、平移、旋转、倾斜等,还支持添加自定义工具栏和控件、执行分析和查询。还可以轻松实现多点触摸和手势识别等操作。
4、可定制化:ArcGIS for Android具有可定制化样式和控件,可以轻松定制应用程序界面的外观和行为。同时也可以添加自定义的样式和符号。
5、离线:ArcGIS for Android支持在无网络环境下使用,可以使用预先下载的地图数据和资源。
三、ArcGIS for Android的代码示例
1、地图显示示例
MapView mMapView = findViewById(R.id.mapView); ArcGISMap map = new ArcGISMap(Basemap.Type.TOPOGRAPHIC, 34.056295, -117.195800, 16); mMapView.setMap(map);
2、位置感知示例
LocationDisplay mLocationDisplay = mMapView.getLocationDisplay(); mLocationDisplay.setAutoPanMode(LocationDisplay.AutoPanMode.RECENTER); mLocationDisplay.startAsync();
3、交互示例
mMapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mMapView) { @Override public boolean onSingleTapConfirmed(MotionEvent e) { android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); Point mapPoint = mMapView.screenToLocation(screenPoint); ... return true; } });
4、可定制化示例
SimpleLineSymbol lineSymbol = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.BLUE, 3.0f); mSwatch.setImageDrawable(new SimpleLineSymbolSwatchGenerator(lineSymbol).generateSwatchDrawable(this));
mapView.setViewpoint(new Viewpoint(GraphicsUtils.getEnvelope(-38.145, 144.827, -38.039, 144.991), new SpatialReference(102100))); mapView.setViewpointScaleAsync(100000); mapView.setBackgroundColor(Color.rgb(255,246,229));
5、离线示例
OfflineMapTask mOfflineMapTask = new OfflineMapTask(mMapView.getMap(), mAreaOfInterest, mMinimumScale, mMaximumScale); OfflineMapParameters parameters = mOfflineMapTask.createDefaultOfflineMapParameters(); parameters.setMinScale(mMinimumScale); parameters.setMaxScale(mMaximumScale); parameters.setScale(mInitialScale); parameters.setAreaOfInterest(mAreaOfInterest); parameters.setOutPath(mOutputMapPath); mOfflineMapTask.performOfflineMap(parameters, mPortalItem);