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

使用Retrofit2调用谷歌地图API时遭遇Java 9 makeConcatWithConstants方法错误

解决方法

1. 修正项目Java版本配置

这个makeConcatWithConstants错误大多源于项目Java版本与依赖的兼容性问题,先在app模块的build.gradle中设置编译选项为Java 8:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    // 若使用Kotlin,需额外添加
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

2. 改用Retrofit注解式参数构建请求

手动拼接URL既容易出错,也不符合Retrofit的设计规范,建议用@Query注解自动拼接参数:

第一步:定义Retrofit接口

public interface DirectionsApi {
    @GET("maps/api/directions/json")
    Call<DirectionsResponse> getDirections(
            @Query("mode") String mode,
            @Query("transit_routing_preference") String transitPreference,
            @Query("origin") String origin,
            @Query("destination") String destination,
            @Query("key") String apiKey
    );
}

(注:需创建DirectionsResponse实体类,对应谷歌API返回的JSON结构,可借助Gson自动解析字段)

第二步:初始化Retrofit并发起请求

// 初始化Retrofit实例
Retrofit retrofit = new Retrofit.Builder()
        .baseUrl("https://maps.googleapis.com/")
        .addConverterFactory(GsonConverterFactory.create())
        .build();

DirectionsApi apiService = retrofit.create(DirectionsApi.class);

// 组装请求参数
String origin = mLastLocation.getLatitude() + "," + mLastLocation.getLongitude();
String destination = "13.767152,-89.655844";
String apiKey = getResources().getString(R.string.google_directions_key);

// 发起异步请求
Call<DirectionsResponse> call = apiService.getDirections(
        "driving",
        "less_driving",
        origin,
        destination,
        apiKey
);

call.enqueue(new Callback<DirectionsResponse>() {
    @Override
    public void onResponse(Call<DirectionsResponse> call, Response<DirectionsResponse> response) {
        if (response.isSuccessful() && response.body() != null) {
            // 处理返回的路线数据
            DirectionsResponse directions = response.body();
            // 可提取routes等字段进行业务处理
        } else {
            // 处理请求失败逻辑
        }
    }

    @Override
    public void onFailure(Call<DirectionsResponse> call, Throwable t) {
        // 处理网络异常
        t.printStackTrace();
    }
});

3. 确认依赖配置正确

检查build.gradle中是否添加了Retrofit及Gson转换器依赖:

dependencies {
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 20:22:14