ArcGIS for Android:地图应用开发的最佳拍档
更新:2023-05-14 00:40
一、ArcGIS for Android的简介
ArcGIS是由Esri公司开发的一套地理信息系统软件,ArcGIS for Android则是其Android平台下的应用程序。ArcGIS for Android提供了一系列帮助开发人员构建具有丰富地图功能的Android应用程序的工具和API,不但可以呈现地图、地理位置和位置感知数据,还可以处理各种交互行为、可定制化样式和控件,总之,ArcGIS for Android为开发人员提供了丰富的地图应用开发工具。
二、ArcGIS for Android的主要功能
- 地图:ArcGIS for Android支持加载和显示各种符号、标记、线条和图形,还可以在地图上添加影像、标记、图层及交互控件等。它还支持在地图上添加事件和处理各种地图事件。
- 位置感知:支持获取设备的详细位置信息,包括高程、经纬度等,并可以将其结合到地图上进行显示。还可以使用位置服务来查询所需的离线地图和其他资源。
- 交互:ArcGIS for Android支持各种交互操作,例如放大、缩小、平移、旋转、倾斜等,还支持添加自定义工具栏和控件、执行分析和查询。还可以轻松实现多点触摸和手势识别等操作。
- 可定制化:ArcGIS for Android具有可定制化样式和控件,可以轻松定制应用程序界面的外观和行为。同时也可以添加自定义的样式和符号。
- 离线: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);