在Android Studio中实现Google Distance/Matrix API,可以按照以下步骤进行:
build.gradle
文件中的dependencies
部分添加以下依赖项:implementation 'com.google.android.gms:play-services-maps:17.0.0'
implementation 'com.google.android.gms:play-services-location:18.0.0'
implementation 'com.google.maps:google-maps-services:0.17.0'
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
MapView
元素,用于显示地图:<com.google.android.gms.maps.MapView
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
MapView
和GoogleMap
对象,并使用API密钥启用地图服务:private MapView mapView;
private GoogleMap googleMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mapView = findViewById(R.id.mapView);
mapView.onCreate(savedInstanceState);
mapView.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap map) {
googleMap = map;
googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
googleMap.getUiSettings().setZoomControlsEnabled(true);
googleMap.getUiSettings().setCompassEnabled(true);
googleMap.getUiSettings().setMyLocationButtonEnabled(true);
googleMap.setMyLocationEnabled(true);
googleMap.setOnMyLocationButtonClickListener(this);
googleMap.setOnMyLocationClickListener(this);
}
@Override
public void onResume() {
super.onResume();
mapView.onResume();
}
@Override
public void onPause() {
super.onPause();
mapView.onPause();
}
@Override
public void onDestroy() {
super.onDestroy();
mapView.onDestroy();
}
@Override
public void onLowMemory() {
super.onLowMemory();
mapView.onLowMemory();
}
DistanceMatrixApi
类来获取距离和时间信息。例如,以下代码将获取从一个地点到另一个地点的距离和时间:LatLng origin = new LatLng(37.7749, -122.4194); // 起点坐标
LatLng destination = new LatLng(34.0522, -118.2437); // 终点坐标
DistanceMatrixApiRequest request = DistanceMatrixApi.newRequest(geoContext)
.origins(origin)
.destinations(destination)
.mode(TravelMode.DRIVING);
request.setCallback(new PendingResult.Callback<DistanceMatrix>() {
@Override
public void onResult(DistanceMatrix result) {
if (result != null && result.rows.length > 0) {
DistanceMatrixRow row = result.rows[0];
if (row.elements.length > 0) {
DistanceMatrixElement element = row.elements[0];
Distance distance = element.distance;
Duration duration = element.duration;
// 获取距离和时间信息
String distanceText = distance.humanReadable;
String durationText = duration.humanReadable;
// 在UI上显示距离和时间信息
runOnUiThread(() -> {
// TODO: 在UI上显示距离和时间信息
});
}
}
}
@Override
public void onFailure(Throwable e) {
// 处理请求失败的情况
}
});
以上代码中的geoContext
是一个GeoApiContext
对象,你需要在你的Activity中进行初始化:
GeoApiContext geoContext = new GeoApiContext.Builder()
.apiKey("YOUR_API_KEY")
.build();
请将YOUR_API_KEY
替换为你在Google Cloud Platform上创建的API密钥。
这样,你就可以在Android Studio中实现Google Distance/Matrix API,并获取距离和时间信息了。记得在使用API时遵循相关的使用政策和限制。
领取专属 10元无门槛券
手把手带您无忧上云