对于众多android开发者来说地图服务API熟悉的或者使用较多就是高德、百度和腾讯了但是业界还有一翘楚就是ArcGIS android,没用过的可能比较陌生,用过的可能也被坑得面目全非,今天我们就一起开始ArcGis开发的填坑之路吧……
最近接手一个项目,要求要用arcgis进行开发,刚开始一脸懵逼啊先百度一下(你懂的),尼玛啊…怎么全是外文儿,像我这样英语过3级的程序猿多半是看不懂啊,怎么办?幸好百度文库还有一些相关文章虽然很陈旧但是还是能凑合着用,这里附一个还不错的链接https://wenku.baidu.com/view/866a09fc7c1cfad6195fa788.html
接下来就开始我们的填坑之旅吧
坑一 :加载的地图显示英文
先普及一下Arcgis 地图展示是以图层形式展示的,底层是地图图层往上是用户按需求添加的GraphicsLayer图层:如marker(标示)、line(线条)等;
如果出现英文地图说明你使用的默认地图图层,只需换一下图层即可。代码如下:
String mapUrl=””
mapUrl
坑 2:加载了中文地图
细心的你可能会发现每次启动地图页面也闪屏一下,对,没错。
我也为此烦恼许久,最后发现MapView 有一个StatusChangedListener监听器
无奈之下把数据处理放到OnStatusChangedListener回调方法来做,
哟!! 果然凑效,页面再也不闪屏了,代码如下:
public void onStatusChanged(Object source, STATUS status) {
if (source == mMapView && status == STATUS.INITIALIZED) {
//你的数据操作
}
}
坑3:
项目中有这样一个需求,地图上的marker点击后弹出一个气泡展示详细信
息,做过地图开发的都知道这是一个再常规不过的功能,可是Arcgis却没有相应的
API研究许久发现SingleTapListener更贴近需求,首先在SingleTapListener回调
中获取marker所在图层,然后设置一个容差值20(大小根据需求来定,值越小容
差越小反之则越大)获取到marker的ID数组,如果数组不为空则表示点击到了
marker,代码如下:
public void onSingleTap(float x, float y) {
GraphicsLayer mGraphicsLayer= (GraphicsLayer)
mMapView.getLayer(1);
int[] graphicIDs =mGraphicsLayer.getGraphicIDs(x, y,20);
if (graphicIDs != null && graphicIDs.length > 0) {
//点击marker,做相应处理
}
}
坑4:Callout隐藏不了
用过的ArcGis 的应该都知道callout显示调用show隐藏调用hide
没错,不过这是一般情况下,如果你想在地图缩小或放大到莫个比例尺的时候隐
藏掉callout呢?这时候不管你怎么调用hide都没用,这应该是API的一个bug吧
,目前还没有更好的解决办法,我只是在缩放结束后延迟一段时间后再调用hide
,如果有好的解决办法或建议的希望我们一起交流。代码如下:
public void hideCallout(){
handler.postDelayed(new Runnable() {
@Override
public void run() {
if(mCallout.isShowing()){
mCallout.animatedHide();
}
}
},2000);
}
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦