You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android加载KML到Google Maps遇InflateException及API密钥缺失问题

问题解答

一、能否直接在Google Maps中打开.kml文件?

当然可以,分两种场景操作:

  • 手机端Google Maps应用:
    • 把你的KML文件上传到Google云端硬盘,确保文件权限设置为你可访问;然后在云端硬盘里找到这个文件,点击打开,选择用Google Maps打开,就能加载显示KML里的路线/区域了。
    • 如果你有KML文件的公开网络链接,直接在Google Maps的搜索栏输入这个链接,也能直接加载。
  • 网页版Google Maps:
    • 直接在搜索栏输入KML的公开URL,回车后就能加载;
    • 也可以通过Google My Maps(地图菜单里的“你的地图”),创建新地图后选择“导入”,上传本地KML文件来查看和编辑。

二、解决你的代码运行错误

从报错日志来看,核心问题是Google Maps API密钥未配置,另外你的代码还有异步加载地图的逻辑问题,一起给你修正:

1. 配置API密钥

错误日志明确提示API key not found,你需要在AndroidManifest.xml的<application>标签内添加API密钥配置:

<meta-data
    android:name="com.google.android.geo.API_KEY"
    android:value="你的Google Maps API密钥"/>

注:API密钥需要去Google Cloud平台创建,步骤是:创建项目 → 启用「Maps SDK for Android」→ 生成API密钥,确保密钥绑定了你的应用包名和签名信息

2. 修正KML加载的逻辑错误

你现在在onCreate里直接初始化KmlLayer,但此时mMap还没通过getMapAsync异步初始化完成,会导致空指针异常。正确的做法是把KML加载代码放到onMapReady方法中:

修改后的MapsActivity.java代码:

private GoogleMap mMap;
KmlLayer layer;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_maps);
    // 获取地图Fragment并异步初始化地图
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
}

@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
    try {
        // 此时mMap已初始化完成,加载KML文件
        layer = new KmlLayer(mMap, R.raw.kml, getApplicationContext());
        layer.addLayerToMap();
        // 可选:自动调整地图视角到KML路线的范围
        LatLngBounds bounds = layer.getBoundingBox();
        mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 100));
    } catch (XmlPullParserException | IOException e) {
        e.printStackTrace();
    }
}

这样既解决了API密钥缺失的问题,也修复了异步加载导致的空指针问题,运行后应该就能正常显示KML里的路线了。

内容的提问来源于stack exchange,提问作者riccardo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:23:56