天地图为什么不提供Android API了?

天地图为什么不提供Android API了?我现在要做一个以天地图为底的Android项目,但是在天地图官网找不到Android SDK或者API,该怎么办?

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/208682
  • 这篇博客你也可以参考下:Android API开发之蓝牙开发之Android 蓝牙开发小项目
  • 除此之外, 这篇博客: Android初学六之在应用中简单调用Android百度地图API SDK中的 5 代码仓库 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 具体代码已上传至gitee代码仓库


  • 您还可以看一下 郭宏志老师的Android 项目实战-影讯课程中的 使用聚合API后台小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    根据参考资料中的代码,可以发现这是百度地图 Android SDK 的示例代码,并非天地图的 Android SDK 或 API。因此,天地图官网没有提供针对 Android 的 SDK 或 API 是正常的。如果你需要使用天地图作为底图,可以考虑使用 Web API 或开源的地图库进行集成。具体步骤如下:

    1. 使用天地图 Web API

    天地图提供了 Web API,可以直接在 Android 上使用。具体步骤如下:

    (1)在布局文件中添加 Webview 控件:

    <WebView
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    

    (2)在 MainActivity 的 onCreate() 方法中,使用以下代码加载天地图:

    WebView webView = findViewById(R.id.webview);
    webView.loadUrl("http://t{s}.tianditu.com/DataServer?T=vec_w&X={x}&Y={y}&L={z}".replace("{s}", "0"));
    

    其中,"http://t{s}.tianditu.com/DataServer?T=vec_w&X={x}&Y={y}&L={z}" 是天地图 Web API 的 URL,"{s}" 对应服务编号,"0" 表示服务编号为 0 的服务,"vec_w" 表示矢量底图(详细参数请参考天地图开发文档)。在代码中使用 replace() 方法将 "{s}" 替换成 "0"。

    1. 使用开源的地图库

    如果你想要自定义底图、覆盖物等,可以尝试使用基于 OpenStreetMap 的一些开源的 Android 地图库,比如 osmdroid、mapsforge 等。这里以 osmdroid 为例:

    (1)在 build.gradle 文件中添加 osmdroid 依赖:

    implementation 'org.osmdroid:osmdroid-android:6.1.0'
    

    (2)在布局文件中添加 MapView 控件:

    <org.osmdroid.views.MapView
        android:id="@+id/mapview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    

    (3)在 MainActivity 中,使用以下代码初始化地图:

    MapView mapView = findViewById(R.id.mapview);
    mapView.setTileSource(new XYTileSource("TianDiTu", 0, 18, 256, ".png",
            new String[]{"http://t0.tianditu.gov.cn/vec_w/",
                    "http://t1.tianditu.gov.cn/vec_w/",
                    "http://t2.tianditu.gov.cn/vec_w/",
                    "http://t3.tianditu.gov.cn/vec_w/",
                    "http://t4.tianditu.gov.cn/vec_w/"}));
    mapView.setBuiltInZoomControls(true);
    mapView.setMultiTouchControls(true);
    

    其中,XYTileSource 表示瓦片地图源,"http://t0.tianditu.gov.cn/vec_w/" 等是天地图的瓦片地图地址。通过 setTileSource() 方法将瓦片地图源设置给 MapView,再通过 setBuiltInZoomControls() 和 setMultiTouchControls() 分别开启缩放控件和多点触控支持。

    以上两种方式都不需要天地图的 Android SDK 或 API,仅需要调用天地图的 Web API 或使用开源的地图库即可实现。