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

时间:2014-05-17 18:02:11   收藏:0   阅读:383

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

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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);

  

效果如下:

bubuko.com,布布扣

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

高德Android SDK 2d地图zoomlevel Bug一种解决方案,布布扣,bubuko.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!