我在我的应用程序中处理谷歌地图。现在在android中,地图没有显示,虽然我已经检查了代码,但是一切正常。
我检查过的步骤,它们工作正常: 1)SHA代码很好。 2)我在应用程序中插入的密钥很好。 3)我为我的应用程序启用了地图API。
但是当我访问地图片段时,logcat显示以下内容:
06-22 18:57:47.380 8417-10561/ I/b: Sending API token request.
06-22 18:57:50.300 8417-10561/ E/b: Authentication failed on the server.
06-22 18:57:50.300 8417-10561/ E/Google Maps Android API: Authorization failure.
Please see https://developers.google.com/maps/documentation/android-api/start for how to correctly set up the map.
06-22 18:57:50.300 8417-10561/ E/Google Maps Android API:
In the Google Developer Console (https://console.developers.google.com)
Ensure that the "Google Maps Android API v2" is enabled.
Ensure that the following Android Key exists:
API Key: AIz------------------------------------S
Android Application (<cert_fingerprint>;<package_name>): SHA-1FingerPrint;PackageName
现在我已经通过互联网搜索了这个问题,但我还没有找到解决方案。我已经完成了以下问题,但没有结果。
Google Maps V2 not working in production with correct key
Google Maps Android API v2 Authorization failure
这是我的地图活动代码:
private void setupWebView(View parentView) {
loading = (ProgressBar) parentView.findViewById(R.id.loading);
loading.setVisibility(View.GONE);
if (googleMap == null) {
googleMap = ((MapFragment) getActivity().getFragmentManager().findFragmentById(R.id.mapf)).getMap();
}
setupMarkers(searchCenters.getText().toString());
}
private void setupMarkers(String searchFor) {
googleMap.clear();
if (searchFor == null || searchFor == "") {
for (Center center : centers) {
markers.add(
googleMap
.addMarker(new MarkerOptions()
.position(new LatLng(center.getAddress().getLatitude(),
center.getAddress().getLongitude()))
.title(center.getName()).visible(true)));
}
} else {
for (Center center : centers) {
if (center.getName().toLowerCase().contains(searchFor.toLowerCase())) {
markers.add(
googleMap.addMarker(new MarkerOptions()
.position(new LatLng(center.getAddress().getLatitude(),
center.getAddress().getLongitude()))
.title(center.getName()).visible(true)));
} else {
markers.add(
googleMap.addMarker(new MarkerOptions()
.position(new LatLng(center.getAddress().getLatitude(),
center.getAddress().getLongitude()))
.title(center.getName()).visible(false)));
}
}
}
结果是这样的:
任何人都可以帮我解决这个问题。我知道这里有很多次问过,但我仍然找不到答案。
答案 0 :(得分:1)
根据您提供的错误日志,Google Maps Android API: Authorization failure.
确保在Google API控制台中激活Google Maps Android API v2服务,在生成API密钥时使用正确的包名称,确保您使用的是正确的密钥库生成SHA1的文件,并按照日志中的建议,确保启用Google Maps Android API v2
,确保存在以下Android密钥。
我可以建议的是阅读Maps Android API的官方Google文档,该指南可以快速将地图添加到Android应用中。这些文档还讨论了如何获取Maps API Key
并包含示例代码。
以下是一个示例代码,其中包含一些说明Google Maps Android API使用的示例:https://github.com/googlemaps/android-samples
答案 1 :(得分:1)
Android Studio有两条路径
app/src/debug/res/values/google_maps_api.xml
app/src/release/res/values/google_maps_api.xml
确保两者具有相同的google_maps_key