Android 高德地图 添加 天地图 卫星瓦片图片(解决高德地图部分地区放大后无卫星图片问题)

废话不多说,直接商代吗

高德地图的加载就不多说了,这个直接去高德官网看就行了

高德官网:概述-Android 地图SDK | 高德地图API

下面我们就说如何添加天地图瓦片图层

天地图官网:天地图API

1.先去天地图注册成为开发者

2.创建应用,需要添加你的Android发布的密钥sha1,这里生成的key需要在添加图层时用

3.高德地图添加图层代码如下

复制代码
final String url = "http://t4.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION" +
        "=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX=%s&" +
        "TILEROW=%s&TILECOL=%s&tk=天地图申请key";

final String url2 = "http://t4.tianditu.gov.cn/cia_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION" +
        "=1.0.0&LAYER=cia&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX=%s&" +
        "TILEROW=%s&TILECOL=%s&tk=天地图申请key";

加载图层的方法onlineTdtLoad(),直接在你地图初始化后执行就可以 mAMap是你实例化的高德地图

aMap.setMaxZoomLevel(Float.parseFloat("18.5")); //设置最大缩放等级

这里注意一下,在实例化高德地图时,需要设置一下最大的缩放等级,要不然放到最大,天地图也会出现没有卫星图的问题

复制代码
复制代码
    private void onlineTdtLoad() {
        UrlTileProvider mUrlTileProvider = new UrlTileProvider(256, 256) {
            @Override
            public URL getTileUrl(int x, int y, int zoom) {
                try {
                    String real_url = String.format(url, zoom, y, x);
                    LatLng mLatLng = mAMap.getProjection().fromScreenLocation(new Point(x,y));
                    Log.e("getTileUrl",x+","+y+""+" "+mLatLng+" "+real_url);
//                    aMap.addMarker(new MarkerOptions().position(mLatLng).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));
//                    aMap.addMarker(new MarkerOptions().icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE))).setPositionByPixels(x,y);
                    return new URL(real_url);
                } catch (Exception e) {
                    e.printStackTrace();
                }

                return null;
            }
        };
        TileOverlayOptions tileOverlayOptions =
                new TileOverlayOptions().tileProvider(mUrlTileProvider);

        UrlTileProvider mUrlTileProvider2 = new UrlTileProvider(256, 256) {
            @Override
            public URL getTileUrl(int x, int y, int zoom) {
                try {
                    String real_url = String.format(url2, zoom, y, x);
                    LatLng mLatLng = mAMap.getProjection().fromScreenLocation(new Point(x,y));
                    Log.e("getTileUrl2",x+","+y+""+" "+mLatLng+" "+real_url);
                    return new URL(real_url);
                } catch (Exception e) {
                    e.printStackTrace();
                }

                return null;
            }
        };
        TileOverlayOptions tileOverlayOptions2 =
                new TileOverlayOptions().tileProvider(mUrlTileProvider2);

        mAMap.addTileOverlay(tileOverlayOptions).setZIndex(1);
        mAMap.addTileOverlay(tileOverlayOptions2).setZIndex(2);
    }

者部分也是参考了大佬的文章Android使用高德地图添加天地图作为底图_高德加载天地图卫星-CSDN博客

相关推荐
uwvwko7 小时前
BUUCTF——web刷题第一页题解
android·前端·数据库·php·web·ctf
fzxwl7 小时前
隆重推荐(Android 和 iOS)UI 自动化工具—Maestro
android·ui·ios
LittleLoveBoy10 小时前
踩坑:uiautomatorviewer.bat 打不开
android
居然是阿宋10 小时前
Android核心系统服务:AMS、WMS、PMS 与 system_server 进程解析
android
CGG9213 小时前
【单例模式】
android·java·单例模式
kp0000013 小时前
PHP弱类型安全漏洞解析与防范指南
android·开发语言·安全·web安全·php·漏洞
编程乐学(Arfan开发工程师)18 小时前
06、基础入门-SpringBoot-依赖管理特性
android·spring boot·后端
androidwork19 小时前
使用 Kotlin 和 Jetpack Compose 开发 Wear OS 应用的完整指南
android·kotlin
繁依Fanyi20 小时前
Animaster:一次由 CodeBuddy 主导的 CSS 动画编辑器诞生记
android·前端·css·编辑器·codebuddy首席试玩官
奔跑吧 android1 天前
【android bluetooth 框架分析 02】【Module详解 6】【StorageModule 模块介绍】
android·bluetooth·bt·aosp13·storagemodule