【发布时间】:2013-12-30 07:42:51
【问题描述】:
我在我的 Android 项目中使用 Google Maps Android v2。
我在 3 台设备上进行了测试:HTC Vivid (4.0.3)、Asus Nexus 7 (4.2.2) 和 Galaxy S2 (2.2)。该地图仅使用上述信息显示在 Galaxy S2 上,所以我知道一切都应该正常工作。
问题:我需要做些什么来增加兼容性,或者只是用更高的 API 版本修复错误?
我做了以下事情:
- 生成了密钥库(调试和自定义)并将它们的 SHA-1 代码和包名称注册到 Google API 控制台。我已经使用两个 API 密钥尝试了该程序,并且都返回了相同的空白屏幕和错误。在调试模式外使用程序表明已尝试访问控制台中报告日志中的 API。
- 已导入 android-support-v4.jar 文件
- 导入 google-play-services_lib 项目文件夹,将其设置为库,并将我的项目配置为使用该库。
-
使用以下代码设置我的“my_map.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" /> -
使用以下代码设置我的活动类
import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.SupportMapFragment; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.MarkerOptions; import android.os.Bundle; import android.view.Menu; public class MapActivity extends android.support.v4.app.FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.my_map); GoogleMap map = ((SupportMapFragment)getSupportFragmentManager() .findFragmentById(R.id.map)).getMap(); map.addMarker(new MarkerOptions().position(new LatLng(34.739849,-92.307129)).title("SwagString")); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.map, menu); return true; } } - 我拥有所有必需的权限
我已将密钥的元数据添加到我的 AndroidManifest.xml 中
-
权限:
<permission android:name="com.uaex.droughtadvisor.permission.MAPS_RECEIVE" android:protectionLevel="signature" /> <uses-permission android:name="com.uaex.droughtadvisor.permission.MAPS_RECEIVE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <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" /> <uses-feature android:glEsVersion="0x00020000" android:required="true" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> -
元数据
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" /> -
在 4.0 及以上设备上运行代码时,我收到此错误:
Failed to load map. Error contacting Google Servers.
【问题讨论】:
-
我尝试了那个解决方案,它不起作用。
-
控制台中的报告日志 - 这说明了什么?在使用实时密钥部署调试应用程序后,我最近发现自己处于类似情况。简单地将钥匙换成正确的钥匙并不能使地图正常工作,直到我完全删除并重新安装了该应用程序。
-
控制台显示没有什么奇怪的。 Logcat 只报告我上面发布的错误。正如我所说,它在运行 Android 2.2 的设备上运行良好,所以我看不出 API 密钥有什么问题。
标签: java android google-maps