使用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
相关产品推荐
相关产品推荐

