需求:
如何在ArcGIS Runtime SDK for Android 100.x中实现比例尺、指北针、书签等功能
效果图:
例如:比例尺和指北针效果
实现思路:
使用arcgis-runtime-toolkit-android这一工具箱即可实现。链接:https://github.com/Esri/arcgis-runtime-toolkit-android
支持的arcgis runtime for android的版本有:
SDK Version | Toolkit Version |
---|---|
100.6.0 | 100.6.0 |
100.6.0 | 100.6.1 |
100.7.0 | 100.7.0 |
100.8.0 | 100.8.0 |
100.9.0 | 100.9.0 |
100.10.0 | 100.10.0 |
具体实现:
①在现有能实现地图服务显示的基础之上,在android工程文件的module's gradle文件中添加工具箱依赖
dependencies {
implementation 'com.esri.arcgisruntime:arcgis-android-toolkit:100.9.0'
}
②布局视图中设置指北针或者比例尺在地图视图上界面效果
例如:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<!-- MapView -->
<com.esri.arcgisruntime.mapping.view.MapView
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.esri.arcgisruntime.mapping.view.MapView>
<com.esri.arcgisruntime.toolkit.compass.Compass
android:id="@+id/compass"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_margin="30dp"
app:autoHide="false"
app:layout_constraintStart_toStartOf="@+id/map"
app:layout_constraintTop_toTopOf="@+id/map" />
</RelativeLayout>
③功能代码实现
public class MainActivity extends AppCompatActivity {
private MapView mMapView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// inflate MapView from layout
mMapView = (MapView) findViewById(R.id.map);
//指北针
Compass mCompass = (Compass) findViewById(R.id.compass);
mCompass.bindTo(mMapView);
//比例尺
Scalebar mScalebar = new Scalebar(mMapView.getContext());
mScalebar.setAlignment(Scalebar.Alignment.CENTER); // optionally override default settings
mScalebar.addToMapView(mMapView);
ArcGISMap map = new ArcGISMap(Basemap.createImagery());
mMapView.setMap(map);
mMapView.setViewpoint(new Viewpoint(34.056295, -117.195800, 10000));
}
@Override
protected void onPause() {
super.onPause();
mMapView.pause();
}
@Override
protected void onResume() {
super.onResume();
mMapView.resume();
}
@Override
protected void onDestroy() {
super.onDestroy();
mMapView.dispose();
}
}