ArcGIS for Android地图控件的5大常见操作转,arcgisandroid
http://blog.csdn.net/arcgis_mobile/article/details/7801467
GIS的开发中,什么时候都少不了地图操作。ArcGIS for Android中,地图组件就是MapView,MapView是基于Android中ViewGroup的一个类(参考),也是ArcGIS Runtime SDK for Android中的地图容器,与很多ArcGIS API中的Map、MapControl类的作用是一样的。
地图常见的操作有缩放、旋转、平移、获取范围、比例尺、分辨率等信息,以及常用的手势操作,其中,经常使用到的功能和常见问题有以下几个:
1)将地图缩放到指定的比例尺/分辨率/级别;
2)设置地图的最大最小缩放级别;
3)获取地图上某点的经纬度坐标;
4)地图的手势操作;
5)地图无法显示。
下面内容会为您详细解答以上问题。
1、获取/设置比例尺、分辨率、中心点、范围;
ArcGIS forAndroid中,MapView具有很多与地图操作有关的方法,其中,与地图的比例尺、分辨率、中心点、范围有关的方法如下:
获取/设置地图的中心点、范围、分辨率、比例尺 |
||
返回类型 |
方法 |
说明 |
Void |
centerAt(Point centerPt, Boolean animated) |
将地图居中到指定的点 |
Point |
getCenter() |
获取地图中心点 |
Polygon |
getExtent() |
获取地图最小外包矩形 |
Envelope |
getMapBoundaryExtent |
获取地图的边界 |
Void |
setExtent(Geometry geometry) |
将地图放大到指定的范围,并将该geometry的bound作为地图当前的extent |
Void |
setExtent(Geometry geometry, int padding) |
将地图放大到指定的geometry以便geometry适应地图的bound |
Double |
getMaxResolution() |
获取地图最大分辨率 |
Void |
setMaxResolution(double maxResolution) |
设置地图最大分辨率 |
Double |
getMinResolution() |
获取地图最小分辨率 |
Void |
setMinResolution(double minResolution) |
设置地图最小分辨率 |
Double |
getResolution() |
获取当前地图分辨率 |
Void |
setResolution |
设置当前地图分辨率 |
Double |
getScale() |
获取当前地图比例尺 |
Void |
setScale(double scale) |
设置当前地图比例尺 |
要获取/设置地图的比例尺、初始分辨率、范围、中心点等信息,直接使用上述方法即可,非常简单,在此不赘述,示例代码如下:
map.setScale(18489297.737236);//设置地图初始化时的比例尺;
map.setAllowRotationByPinch(true);//设置是否允许地图通过pinch方式旋转;
map.setRotationAngle(15.0);//设置地图的旋转角度;
……
2、地图缩放、平移和旋转;
与缩放和旋转有关的地图事件如下:
地图缩放、旋转 |
||
返回类型 |
方法 |
说明 |
Void |
zoomin() |
|
Void |
zoomout() |
|
Void |
zoomTo(Point centerPt, float factor) |
将地图放荡到指定点 |
Void |
zoomToResolution(Point centerPt, double res) |
将地图放大到指定分辨率 |
Void |
zoomToScale(Point centerPt, double scale) |
将地图放大到指定比例尺 |
Double |
getRotationAngle() |
返回当前地图旋转角度(单位degree) |
Void |
setRotationAngle(double degree) |
将地图按照指定的角度(单位degree)旋转,度数为正数则按逆时针方向旋转 |
Void |
setRotationAngle(double degree, float pivotX, float pivotY) |
将地图按指定的点和角度旋转,角度为正数按逆时针 |
Void |
setAllowRotationByPinch(boolean allowRotationByPinch) |
允许/取消pinch旋转 |
Boolean |
isAllowRotationByPinch() |
是否允许pinch时旋转 |
2.1 平移
MapView的方法中,没有专门针对平移操作,主要原因在于,MapView中已经默认支持平移操作,即使用鼠标或手势拖动地图时就会平移地图,所以无需设置;
2.2 缩放至指定的分辨率/比例尺和连续放大n倍
一般的切片地图服务,在其REST服务的目录下都能查到切片的等级、等级对应的分辨率和比例尺,每个等级之间的分辨率和比例尺之间呈2倍的关系。
ArcGIS Android中没有像Web中的那种指针控件,没有直接的地图级别的控制,通常级别控制通过分辨率或比例尺来实现。可以用getResolution()和getscale()方法获取当前地图的比例尺和分辨率,然后利用2的倍数关系,使用zoomTo()/zoomToScale()/zoomToResolution()来达到“控制地图缩放级别&rdq