高德Android SDK 2d地图zoomlevel Bug一种解决方案

在Android 2D地图SDK V2.2.0中,存在一个bug ,当getCameraPositon().zoom得到的值都是3.0,如果在应用中不得不用这一版本的2D地图,又必须取得这个值时(如果非必须不推荐哈),这里有一个不是很传统的方式去获取,通过在地图上添加一个TileOverlay,这个Overlay呢,不加载任何新的图层或者数据,仅仅是为了取得最新的level级别:

代码如下:

mAmap = mMapView.getMap();

           // tileoverlay,只用于取level不加任何数据

           TileProvider tileprovider = new UrlTileProvider(256, 256) {

 

              @Override

              public URL getTileUrl(int x, int y, int level) {

                  // 拿到当前的级别

                  if (mLevel != level) {

                     mLevel = level;

                     // 这里是子线程,不能直接操作ui,

                     // ps:mLevel的获取不要通过OncameraChangeListener进行处理

                     // 因为线程的先后关系,在快速缩放时,取到的mLevel有可能不是最新的

                     handler.sendEmptyMessage(0);

                  }

                  // 这里不加载新的图层所以为null

                  return null;

              }

           };

 

           TileOverlayOptions tileOverlayOptions = new TileOverlayOptions();

           tileOverlayOptions.tileProvider(tileprovider);

           // 将tileovelay加到地图

       mAmap.addTileOverlay(tileOverlayOptions);

  

效果如下:

具体代码(替换key)和apk见附件

转载于:https://www.cnblogs.com/gisxs/p/3732084.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值