求助:SphericalUtil.computeDistanceBetween参数LatLng类型不匹配问题
解决SphericalUtil.computeDistanceBetween的LatLng类型不兼容问题
问题核心是你使用的com.google.android.gms.maps.model.LatLng(传统GMS地图库的坐标类),和SphericalUtil(来自Maps Utils v3)要求的com.google.android.libraries.maps.model.LatLng(Jetpack Compose地图库的坐标类)不属于同一类型,导致参数匹配失败。以下是两种可行解决办法:
方案一:转换LatLng类型
直接提取经纬度值,重新构造符合方法要求的LatLng对象:
// 确保导入的是libraries版本的LatLng import com.google.android.libraries.maps.model.LatLng; // 将GMS版本的LatLng转换为libraries版本 LatLng userAddressLib = new LatLng(currentRiderLocation.getLatitude(), currentRiderLocation.getLongitude()); LatLng destinationAddressLib = new LatLng(destination.getLatitude(), destination.getLongitude()); double distance = SphericalUtil.computeDistanceBetween(userAddressLib, destinationAddressLib);
方案二:降级Maps Utils版本
如果不想修改现有代码,可以将Maps Utils降级到v2.x版本,该版本的SphericalUtil仍依赖GMS的LatLng,与你当前使用的play-services-maps兼容:
修改build.gradle中的依赖配置:
// 替换原v3依赖为v2版本(示例用2.3.0,可选择其他v2系列版本) implementation 'com.google.maps.android:android-maps-utils:2.3.0'
补充说明
Google从Maps Utils v3开始,切换为适配Jetpack Compose的Google Maps库(com.google.android.libraries.maps),而旧版v2适配的是传统GMS Maps库(com.google.android.gms.maps),两个库的LatLng是独立类,无法直接兼容。
内容的提问来源于stack exchange,提问作者Ajinkya
相关产品推荐
相关产品推荐

