基于arcgis for android 100.6 和java语言开发,实现分屏对比功能,两边屏幕上可以添加不同图层,但是地图可以实时联动
时间: 2023-05-31 17:06:07 浏览: 195
实现分屏对比功能,需要使用SplitView控件来分割屏幕,并在每个屏幕上添加MapView控件来显示地图。同时,需要为每个MapView控件设置不同的图层。
1. 创建SplitView控件
SplitView控件可以在布局文件中使用,也可以在代码中动态创建。以下是一个简单的布局文件:
```xml
<?xml version="1.0" encoding="utf-8"?>
<com.esri.arcgisruntime.mapping.view.SplitView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/splitView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"/>
```
2. 创建MapView控件
可以在代码中创建一个MapView控件,并设置地图、图层等属性。以下是一个简单的示例:
```java
MapView mapView = new MapView(this);
mapView.setMap(new ArcGISMap(Basemap.createTopographic()));
FeatureLayer featureLayer = new FeatureLayer(new ServiceFeatureTable("url_to_feature_service"));
mapView.getMap().getOperationalLayers().add(featureLayer);
```
3. 添加MapView控件到SplitView控件中
可以通过SplitView控件的addView方法将MapView控件添加到SplitView控件中。以下是一个示例:
```java
SplitView splitView = findViewById(R.id.splitView);
splitView.addView(mapView1);
splitView.addView(mapView2);
```
4. 实现联动效果
为了实现地图的联动效果,需要在每个MapView控件中添加一个MapView.OnExtentChangedListener监听器,当一个MapView控件的范围改变时,调用另一个MapView控件的setViewpoint方法来使其范围同步。以下是一个示例:
```java
mapView1.addViewpointChangedListener(new MapView.OnViewpointChangedListener() {
@Override
public void onViewpointChanged(MapView mapView, Viewpoint viewpoint) {
mapView2.setViewpointAsync(viewpoint);
}
});
```
5. 布局和样式
可以根据自己的需要自定义SplitView控件的布局和样式,例如设置分割线的颜色和宽度、设置分割线的位置等。
以上是基于arcgis for android 100.6 和java语言开发,实现分屏对比功能,两边屏幕上可以添加不同图层,但是地图可以实时联动的方法。
阅读全文