环境配置
- 对于已经接触过android 的开发 android的环境不废话了,下面直接对arcgis的开发环境,进行配置
1.在线安装
http://downloads.esri.com/software/arcgis/android 这个地址直接安装就行了
2.离线安装
下载离线包下载
开发心得
遇到的问题
1.使用ARCGIS加载自己的地图服务
用ArcGISTiledMapServiceLayer这个图层
2.用自己的地图服务在自己的地图服务内进行定位
1>.使用android 定位APi 获取坐标
2>.获取坐标以后用Handler进行数据传递,在handleMessage方法里对
获取的坐标进行判断
3>.然后再使用GraphicsLayer在地图上显示
graphicsLayer = new GraphicsLayer();
PictureMarkerSymbol pic =
new PictureMarkerSymbol(getResources().getDrawable(R.drawable.myloc));
pt = new Point(Float.parseFloat(strY), Float.parseFloat(strX));// 创建一个点对象
Graphic gp = new Graphic(pt, pic);// 设置样式
graphicsLayer.addGraphic(gp);// 添加到图层中
mMapView.addLayer(graphicsLayer);
3.对自己地图服务上的点设置监听
地图设置setOnSingleTapListener监听,在onSingleTap方法里
获graphicsLayer图层 并对附近的点进行检索
// 地图上的点击事件
mMapView.setOnSingleTapListener(new OnSingleTapListener() {
/**
*
*/
private static final long serialVersionUID = -4460650528173919694L;
@Override
public void onSingleTap(float x, float y) {
if (!mMapView.isLoaded()) { // 如果地图还未加载好 则不执行任何操作
return;
}
// 获得图层
GraphicsLayer layer = GetGraphicLayer();
if (layer != null && layer.isInitialized() && layer.isVisible()) {
Graphic result = null;
// 检索当前 光标点(手指按压位置)的附近的 graphic对象
result = GetGraphicsFromLayer(x, y, layer);
if (result != null) {
// 获得附加特别的属性
int msgTag = (Integer) result.getAttributeValue("tag");
DisputeEntity disputeEntity = null;
if (checkResultPhone.size() != 0) {
disputeEntity = checkResultPhone.get(msgTag);
}
Log.e(TAG, "" + msgTag);
// 实例化SelectPicPopupWindow
menuWindow =
new SelectPicPopupWindow2(CheckDisputeLocalMapActivity.this,
itemsOnClick, disputeEntity);
// 显示窗口
menuWindow.showAtLocation(
CheckDisputeLocalMapActivity.this.findViewById(R.id.llMap),
Gravity.TOP | Gravity.CENTER_HORIZONTAL, 0, 0); // 设置layout在PopupWindow中显示的位置
//
}
}
}
});
4.在自己的地图服务上点击每一个获取点的所附带的值,并弹出自定义的pop
// 获得附加特别的属性
int msgTag = (Integer) result.getAttributeValue("tag");
// 实例化SelectPicPopupWindow
menuWindow =
new SelectPicPopupWindow2(CheckDisputeLocalMapActivity.this,
itemsOnClick, disputeEntity);
// 显示窗口
menuWindow.showAtLocation(
CheckDisputeLocalMapActivity.this.findViewById(R.id.llMap),
Gravity.TOP | Gravity.CENTER_HORIZONTAL, 0, 0); // 设置layout在PopupWindow中显示的位置
5.地图缓存
重写这个ArcGISTiledMapServiceLayer类
在getTile方法里面进行缓存
仅供参考代码下载