地图活动没有显示地图,它显示为带有缩放控制按钮的白色屏幕。 清单文件如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.demomap"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<permission
android:name="com.example.demomap.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="com.example.demomap.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.demomap.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyCTQZOcXFS3RpNSVe79HHN1xojat-2MbT4" />
</application>
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
</manifest>
我的XmL文件就像这样:
<?xml version="1.0" encoding="utf-8"?>
<fragment
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment" />
Log Cat错误:
05-15 17:15:16.255: E/Google Maps Android API(26201): Failed to load map. Error contacting Google servers. This is probably an authentication issue (but could be due to network errors).
请帮助我。
答案 0 :(得分:40)
也许关键不正确。您可以尝试以下方法:
主动谷歌地图api v2 for android google console site
答案 1 :(得分:17)
我使用MapView
遇到了这个问题fragment_map.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.gms.maps.MapView
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
String message = getArguments().getString(EXTRA_MESSAGE);
v = inflater.inflate(R.layout.map_f, container, false);
vh = new ViewHolder();
assetHandler = new AssetHandler(getActivity());
vh.mapView=assetHandler.mapViewHandler.set(v,R.id.mapview);
vh.mapView.onCreate(savedInstanceState);
vh.mapView.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap googleMap) {
googleMap.getUiSettings().setMyLocationButtonEnabled(true);
googleMap.setMyLocationEnabled(true);
// Needs to call MapsInitializer before doing any CameraUpdateFactory calls
try {
MapsInitializer.initialize(getActivity());
} catch (Exception e) {
e.printStackTrace();
}
}
});
return v;
}
@Override
public void onResume() {
super.onResume();
vh.mapView.onResume();
}
@Override
public void onPause() {
vh.mapView.onPause();
super.onPause();
}
@Override
public void onDestroy() {
vh.mapView.onDestroy();
super.onDestroy();
}
@Override
public void onLowMemory() {
super.onLowMemory();
vh.mapView.onLowMemory();
}
我注意到如果没有实现LifeCycle方法,你也将无法看到地图。希望这对某些人有希望。
答案 2 :(得分:6)
问题很多时候是因为没有在清单中的权限中添加Google服务支持:
检查您的清单中是否存在此权限:
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
答案 3 :(得分:6)
我更改了包名并更新了控制台。我有一切正确(清单中正确的SHA1密钥,包名称和API密钥)但仍然得到相同的错误消息。
我不得不卸载应用并重启手机以解决问题。似乎有些东西被缓存了。
答案 4 :(得分:3)
如前所述,此问题通常源于您未正确引用google-play-service
库。请查看以下指南的前3个步骤我没有在您的应用程序中集成Google地图并确保您正确执行所有步骤:
答案 5 :(得分:3)
我遇到了和你一样的问题,但当我注意到我没有在创建新应用程序时提到API密钥中的软件包名称时我解决了它/////你必须在API谷歌控制台中检查它
希望对你有所帮助。<强>
must be the same package name at the console and the one in your eclipse.
强>
答案 6 :(得分:2)
我的建议是你可以使用MapFragment。据我所知,几乎所有设备都升级到11及以上。 MapFragment支持11及以上版本。 再次登录google api控制台,检查您的应用程序密钥是否存在。我知道你已经做到了。但请再次检查。因为我遇到了api密钥没有被保存的问题。我每次都要创建一个新项目。也许你也面临同样的问题。
答案 7 :(得分:2)
我在这个错误上花了几个小时。我最初没有正确设置调试密钥库API密钥,我的Android设备缓存了硬编码到我的清单中的错误API密钥。最后,我只是从设备中删除了应用程序,清理了项目,这清除了本地存储在设备上的任何残留API密钥。我再次运行应用程序,一切都像魅力一样!
祝你好运。
答案 8 :(得分:1)
有两种类型签名和未签名的apk。如果您的apk已签名,那么您想使用发布密钥。如果您使用调试密钥并签署了apk,它将无法正常工作。所以在导出apk并检入真实设备时使用释放键。在本文档中,https://developers.google.com/maps/documentation/android/start#the_google_maps_api_key已经给出了。显示发布证书指纹。
答案 9 :(得分:1)
这是99%的密钥库问题。
1)我用于发布和调试相同的文件debug.keystore,我将其从C:/Users/EEfimenko/.android/debug.keystore复制到C:\ Users \ EEfimenko \ Android \ MyApp \ app文件夹以进行访问直接喜欢'debug.keystore'而没有“C:/ Users / ...”链接
2)然后我在'android {'中的build.gradle(Module:app)文件中添加指向它的内容:
signingConfigs {
debug {
storeFile file('debug.keystore')
}
release {
storeFile file('debug.keystore')
}
}
3)从C:\ Users \ EEfimenko \ Android \ MyApp \ app文件夹中的cmd运行“keytool -list -v -keystore debug.keystore”命令,并将得到的SHA1指纹与applet的名称混合:FR:TY:CG ..... YF:ER; com.myapp.nameofit
4)然后我转到https://code.google.com/apis/console/b/0/?noredirect:
a)服务并启用“Google Maps Android API v2”到ON状态
b)把FR:TY:CG ..... YF:ER; com.myapp.nameofit在“API Access”中创建新的Android Key
现在你可以像开头一样再次看到你的地图,而不用钥匙!:)
答案 10 :(得分:1)
如果您使用的是为debug.keystore
创建的API密钥,则只有在调试模式下运行应用程序时才会呈现地图。确保你这样做。
答案 11 :(得分:0)
我有同样的问题,通过将其添加到清单文件来解决。
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="google_maps_key" />
<uses-library
android:name="org.apache.http.legacy"
android:required="false" />
答案 12 :(得分:0)
你需要使用相同的sh1签署你的apk,它在google api控制台上注册相同的应用程序包名称,并在google api控制台上的地图v2服务上,确保用相同的sh1分发debug.keystore签名你的apk然后在真实设备上测试它会像魅力一样工作。
答案 13 :(得分:0)
我只花了很多时间。事实证明我的磁盘上有一个不同的debug.keystore(搜索以确保你使用正确的)。此外,如果您收到此错误,请让应用程序运行一段时间。当我在Google API访问中添加正确的SHA1 /应用程序时,我再次收到错误,当我突然阅读一些文档时,地图出现了。可能需要1-2分钟。
答案 14 :(得分:0)
除了上面提到的要检查的项目之外 - 我在eclipse之外生成了SHA1键。然后我将我的项目移动到eclipse(我正在尝试android studio)并且eclipse自动生成一个新的SHA1密钥,因此我必须基于此生成一个新的API_KEY。
答案 15 :(得分:0)
这就是我做的...... 1)更改了工作区。 2)来自Lance Nanek的网站http://permalink.gmane.org/gmane.comp.handhelds.android.devel/98066,似乎 - 使用新库功能,您不需要在属性的Java Build Path部分中指定您所依赖的Android项目。您可以在属性的Android部分中执行此操作。
等等,在Java Build Path中转到Application Project的属性 - &gt;点击项目 - 选择库并删除它。这解决了我的问题!!
答案 16 :(得分:0)
我遇到了同样的问题,所以我继续在API控制台上创建了一个新密钥。另外,请确保在API控制台上按照说明记录发布密钥:Displaying the release certificate fingerprint
现在对我有用......
答案 17 :(得分:0)
您是否在API控制台中激活了Google地图服务?
答案 18 :(得分:-1)
在我的清单的应用程序标记中添加以下内容之前,我无法让它工作:
<application>
...
<uses-library android:required="true" android:name="com.google.android.maps" />
...
</application>
希望这有帮助!