方向 API google 地图在上次更新 google 后出现问题
Problem with Direction API google map after the last update from google
我需要在我的 android 应用程序中建立一个方向,所以
1- 我从 google api 控制台获得新密钥
2- 我做了帐单并获得了免费试用
3- 我按照 google 开发人员的说明进行操作,但我遇到了问题
无效的 Api 密钥 我注意到我的工作中有一个缺失的部分,这是 google 指南中的第二步
第 2 步:将 API 键添加到您的应用
加载方向 API 时,请将下面代码中的 YOUR_API_KEY 替换为您从上一步获得的 API 键 https://maps.googleapis.com/maps/api/directions/json?origin=Toronto&destination=Montreal&key=YOUR_API_KEY
但我不知道把这段代码放在哪里?
最后这是我的所有代码:
DateTime now = new DateTime();
try {
DirectionsResult result = DirectionsApi.newRequest(getGeoContext())
.mode(TravelMode.DRIVING).origin(String.valueOf(userLocation))
.destination(String.valueOf(sydney)).departureTime(now)
.await();
addMarkersToMap(result,mMap);
addPolyline(result,mMap);
} catch (ApiException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
private GeoApiContext getGeoContext() {
GeoApiContext geoApiContext = new GeoApiContext();
return geoApiContext.setQueryRateLimit(3)
.setApiKey("@string/google_maps_key")
.setConnectTimeout(1, TimeUnit.SECONDS)
.setReadTimeout(1, TimeUnit.SECONDS)
.setWriteTimeout(1, TimeUnit.SECONDS);
}
private void addMarkersToMap(DirectionsResult results, GoogleMap mMap) {
mMap.addMarker(new MarkerOptions().position(new LatLng(results.routes[0].legs[0].startLocation.lat,results.routes[0].legs[0].startLocation.lng)).title(results.routes[0].legs[0].startAddress));
mMap.addMarker(new MarkerOptions().position(new LatLng(results.routes[0].legs[0].endLocation.lat,results.routes[0].legs[0].endLocation.lng)).title(results.routes[0].legs[0].startAddress)
.snippet(getEndLocationTitle(results)));
}
private void addPolyline(DirectionsResult results, GoogleMap mMap) {
List<LatLng> decodedPath = PolyUtil.decode(results.routes[0].overviewPolyline.getEncodedPath());
mMap.addPolyline(new PolylineOptions().addAll(decodedPath));
}
private String getEndLocationTitle(DirectionsResult results){
return "Time :"+ results.routes[0].legs[0].duration.humanReadable + " Distance :" + results.routes[0].legs[0].distance.humanReadable; }
您使用的 Android 地图 SDK 混淆了 Google 方向的 Javascript API。
在此处查看文档:https://developers.google.com/maps/documentation/android-sdk/signup
In AndroidManifest.xml, add the following element as a child of the element, by inserting it just before the closing tag:
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="YOUR_API_KEY"/>
[已解决]
这就是原因
.setApiKey("@string/google_maps_key")
它将此作为字符串而不是 google api 键
所以 t
我需要在我的 android 应用程序中建立一个方向,所以 1- 我从 google api 控制台获得新密钥 2- 我做了帐单并获得了免费试用 3- 我按照 google 开发人员的说明进行操作,但我遇到了问题 无效的 Api 密钥 我注意到我的工作中有一个缺失的部分,这是 google 指南中的第二步 第 2 步:将 API 键添加到您的应用 加载方向 API 时,请将下面代码中的 YOUR_API_KEY 替换为您从上一步获得的 API 键 https://maps.googleapis.com/maps/api/directions/json?origin=Toronto&destination=Montreal&key=YOUR_API_KEY 但我不知道把这段代码放在哪里? 最后这是我的所有代码:
DateTime now = new DateTime();
try {
DirectionsResult result = DirectionsApi.newRequest(getGeoContext())
.mode(TravelMode.DRIVING).origin(String.valueOf(userLocation))
.destination(String.valueOf(sydney)).departureTime(now)
.await();
addMarkersToMap(result,mMap);
addPolyline(result,mMap);
} catch (ApiException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
private GeoApiContext getGeoContext() {
GeoApiContext geoApiContext = new GeoApiContext();
return geoApiContext.setQueryRateLimit(3)
.setApiKey("@string/google_maps_key")
.setConnectTimeout(1, TimeUnit.SECONDS)
.setReadTimeout(1, TimeUnit.SECONDS)
.setWriteTimeout(1, TimeUnit.SECONDS);
}
private void addMarkersToMap(DirectionsResult results, GoogleMap mMap) {
mMap.addMarker(new MarkerOptions().position(new LatLng(results.routes[0].legs[0].startLocation.lat,results.routes[0].legs[0].startLocation.lng)).title(results.routes[0].legs[0].startAddress));
mMap.addMarker(new MarkerOptions().position(new LatLng(results.routes[0].legs[0].endLocation.lat,results.routes[0].legs[0].endLocation.lng)).title(results.routes[0].legs[0].startAddress)
.snippet(getEndLocationTitle(results)));
}
private void addPolyline(DirectionsResult results, GoogleMap mMap) {
List<LatLng> decodedPath = PolyUtil.decode(results.routes[0].overviewPolyline.getEncodedPath());
mMap.addPolyline(new PolylineOptions().addAll(decodedPath));
}
private String getEndLocationTitle(DirectionsResult results){
return "Time :"+ results.routes[0].legs[0].duration.humanReadable + " Distance :" + results.routes[0].legs[0].distance.humanReadable; }
您使用的 Android 地图 SDK 混淆了 Google 方向的 Javascript API。
在此处查看文档:https://developers.google.com/maps/documentation/android-sdk/signup
In AndroidManifest.xml, add the following element as a child of the element, by inserting it just before the closing tag:
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="YOUR_API_KEY"/>
[已解决] 这就是原因
.setApiKey("@string/google_maps_key")
它将此作为字符串而不是 google api 键 所以 t