Android 谷歌地图没有加载数据

Android 谷歌地图没有加载数据,android,google-maps,Android,Google Maps,我在我的应用程序中设置了谷歌地图,它运行顺利,没有错误,但地图只是没有加载任何内容。 Cat log说它使用“Google Play services客户端版本:4452000”,紧接着就是“Google Play services软件包版本:5089038”,这正常吗 这就是它看起来的样子: FragmentManager fmanager = getSupportFragmentManager(); Fragment fragment = fmanager.findFragm

我在我的应用程序中设置了谷歌地图,它运行顺利,没有错误,但地图只是没有加载任何内容。 Cat log说它使用“Google Play services客户端版本:4452000”,紧接着就是“Google Play services软件包版本:5089038”,这正常吗

这就是它看起来的样子:

    FragmentManager fmanager = getSupportFragmentManager();
    Fragment fragment = fmanager.findFragmentById(R.id.map_view);
    SupportMapFragment supportmapfragment = (SupportMapFragment)fragment;
    GoogleMap supportMap = supportmapfragment.getMap();

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/map_view"
              android:layout_width="match_parent"
              android:layout_height="400dp"
              android:name="com.google.android.gms.maps.SupportMapFragment"/>

I/Google Maps Android API(23503): Google Play services client version: 4452000
I/dalvikvm(23503): Could not find method gui.a, referenced from method gqh.a
W/dalvikvm(23503): VFY: unable to resolve static method 24934: Lgui;.a (Landroid/content/Context;)Lgrh;
D/dalvikvm(23503): VFY: replacing opcode 0x71 at 0x0003
E/dalvikvm(23503): Could not find class 'gpq', referenced from method gpr.a
W/dalvikvm(23503): VFY: unable to resolve new-instance 4090 (Lgpq;) in Lgpr;
D/dalvikvm(23503): VFY: replacing opcode 0x22 at 0x0000
E/dalvikvm(23503): Could not find class 'gpq', referenced from method gpr.a
W/dalvikvm(23503): VFY: unable to resolve new-instance 4090 (Lgpq;) in Lgpr;
D/dalvikvm(23503): VFY: replacing opcode 0x22 at 0x0000
E/dalvikvm(23503): Could not find class 'gpq', referenced from method gpr.a
W/dalvikvm(23503): VFY: unable to resolve new-instance 4090 (Lgpq;) in Lgpr;
D/dalvikvm(23503): VFY: replacing opcode 0x22 at 0x0000
D/dalvikvm(23503): DexOpt: unable to opt direct call 0x5ea1 at 0x0a in Lgpr;.a
D/dalvikvm(23503): DexOpt: unable to opt direct call 0x5ea1 at 0x0c in Lgpr;.a
D/dalvikvm(23503): DexOpt: unable to opt direct call 0x5ea1 at 0x0a in Lgpr;.a
D/dalvikvm(23503): GC_FOR_ALLOC freed 433K, 9% free 19472K/21336K, paused 13ms, total 13ms
I/Google Maps Android API(23503): Google Play services package version: 5089038
W/dalvikvm(23503): VFY: unable to resolve static field 20875 (t) in Lyo;
D/dalvikvm(23503): VFY: replacing opcode 0x62 at 0x000e
W/dalvikvm(23503): VFY: unable to resolve static field 20875 (t) in Lyo;
D/dalvikvm(23503): VFY: replacing opcode 0x62 at 0x000d
D/dalvikvm(23503): GC_FOR_ALLOC freed 585K, 8% free 19817K/21336K, paused 13ms, total 13ms
I/dalvikvm(23503): Failed resolving Lcom/google/android/gms/location/internal/ParcelableGeofence; interface 4023 'Lglm;'
W/dalvikvm(23503): Link of class 'Lcom/google/android/gms/location/internal/ParcelableGeofence;' failed
E/dalvikvm(23503): Could not find class 'com.google.android.gms.location.internal.ParcelableGeofence', referenced from method gls.a
W/dalvikvm(23503): VFY: unable to resolve check-cast 2086 (Lcom/google/android/gms/location/internal/ParcelableGeofence;) in Lgls;
D/dalvikvm(23503): VFY: replacing opcode 0x1f at 0x0019
D/dalvikvm(23503): GC_FOR_ALLOC freed 155K, 4% free 20608K/21336K, paused 13ms, total 14ms
V/QcrilMsgTunnelSocket( 1866): After reading offset = 0 remaining = 4 countRead = 4
D/QcrilMsgTunnelSocket( 1866): messageLength extracted from first 4 inputStream reads = 29
V/QcrilMsgTunnelSocket( 1866): offset = 0 remaining = 29 countRead = 0
V/QcrilMsgTunnelSocket( 1866): offset = 0 remaining = 29 countRead = 29
D/QcrilMsgTunnelSocket( 1866): readRilMessage: Buffer = [B@425f22a0 HexData = [0100000004040000110000005155414c434f4d4def0308000100000003]
V/QcrilMsgTunnelSocket( 1866): Read packet: 29 bytes. Data Available = 32 Position = 0
D/QcrilMsgTunnelSocket( 1866): processResponse. message type = 1. Data Available = 28
D/QcrilMsgTunnelSocket( 1866): ByteArray from parcel = 5155414c434f4d4def0308000100000003
D/QcrilMsgTunnelSocket( 1866): Received RIL_UNSOL_OEM_HOOK_RAW message
D/QcrilMsgTunnelSocket( 1866): Oem ID in RIL_UNSOL_OEM_HOOK_RAW is QUALCOMM
D/QcrilMsgTunnelSocket( 1866): OEM ID check Passed
D/QcrilMsgTunnelSocket( 1866): Response ID in RIL_UNSOL_OEM_HOOK_RAW is 525295
D/QcrilMsgTunnelSocket( 1866): Response ID 525295is not served in this process.
D/QcrilMsgTunnelSocket( 1866): To broadcast an Intent via the notifier to external apps
D/QcrilMsgTunnelIfaceManager( 1866): handleMessage what=0
D/QcrilMsgTunnelIfaceManager( 1866): Broadcasting intent ACTION_UNSOL_RESPONSE_OEM_HOOK_RAW
V/QcrilMsgTunnelSocket( 1866): Before reading offset = 0 remaining = 4 countRead = 0
I/Google Maps Android API(23503): Failed to contact Google servers. Another attempt will be made when connectivity is established
D/MobileDataStateTracker(  785): default: setPolicyDataEnable(enabled=true)
E/Google Maps Android API(23503): Failed to load map. Error contacting Google servers. This is probably an authentication issue (but could be due to network errors).

FragmentManager fmanager=getSupportFragmentManager();
Fragment Fragment=fmanager.findframentbyid(R.id.map_视图);
SupportMapFragment SupportMapFragment=(SupportMapFragment)片段;
GoogleMap supportMap=supportmapfragment.getMap();
I/Google地图Android API(23503):Google Play services客户端版本:4452000
I/dalvikvm(23503):找不到从方法gqh.a引用的方法gui.a
W/dalvikvm(23503):VFY:无法解析静态方法24934:Lgui;。a(Landroid/content/Context;)Lgrh;
D/dalvikvm(23503):VFY:在0x0003处替换操作码0x71
E/dalvikvm(23503):找不到从方法gpr.a引用的类“gpq”
W/dalvikvm(23503):VFY:无法解析Lgpr中的新实例4090(Lgpq;);
D/dalvikvm(23503):VFY:将操作码0x22替换为0x0000
E/dalvikvm(23503):找不到从方法gpr.a引用的类“gpq”
W/dalvikvm(23503):VFY:无法解析Lgpr中的新实例4090(Lgpq;);
D/dalvikvm(23503):VFY:将操作码0x22替换为0x0000
E/dalvikvm(23503):找不到从方法gpr.a引用的类“gpq”
W/dalvikvm(23503):VFY:无法解析Lgpr中的新实例4090(Lgpq;);
D/dalvikvm(23503):VFY:将操作码0x22替换为0x0000
D/dalvikvm(23503):DexOpt:无法在Lgpr;中的0x0a处选择直接调用0x5ea1;。A.
D/dalvikvm(23503):DexOpt:无法在Lgpr;中的0x0c处选择直接调用0x5ea1;。A.
D/dalvikvm(23503):DexOpt:无法在Lgpr;中的0x0a处选择直接调用0x5ea1;。A.
D/dalvikvm(23503):释放433K的所有物质的GC_,9%的自由19472K/21336K,暂停13ms,总计13ms
I/Google地图Android API(23503):Google Play服务包版本:5089038
W/dalvikvm(23503):VFY:无法解析Lyo中的静态场20875(t);
D/dalvikvm(23503):VFY:在0x000e处替换操作码0x62
W/dalvikvm(23503):VFY:无法解析Lyo中的静态场20875(t);
D/dalvikvm(23503):VFY:在0x000d处替换操作码0x62
D/dalvikvm(23503):释放585K的总成本,释放19817K/21336K的8%,暂停13ms,总计13ms
I/dalvikvm(23503):无法解析Lcom/google/android/gms/location/internal/ParcelableGeofence;接口4023'Lglm;'
W/dalvikvm(23503):类“Lcom/google/android/gms/location/internal/ParcelableGeofence;”的链接失败
E/dalvikvm(23503):找不到从方法gls.a引用的类“com.google.android.gms.location.internal.ParcelableGeofence”
W/dalvikvm(23503):VFY:无法解析Lgls中的check cast 2086(Lcom/google/android/gms/location/internal/ParcelableGeofance;);
D/dalvikvm(23503):VFY:在0x0019处替换操作码0x1f
D/dalvikvm(23503):释放155K的所有组件的GC,4%的释放20608K/21336K,暂停13ms,总计14ms
V/qcrimsgtunnelsocket(1866):读取后偏移量=0剩余=4计数读取=4
D/qcrimsgtunnelsocket(1866):从前4个inputStream读取中提取的messageLength=29
V/qcrimsgtunnelsocket(1866):偏移量=0剩余=29计数读取=0
V/qcrimsgtunnelsocket(1866):偏移量=0剩余=29计数读取=29
D/qcrimsgtunnelsocket(1866):readRilMessage:Buffer=[B@425f22a0HexData=[0100000004040000110000545414C434F4D4DEF0308000100000003]
V/qcrimsgtunnelsocket(1866):读取数据包:29字节。可用数据=32位置=0
D/qcrimsgtunnelsocket(1866):processResponse.messagetype=1.Data Available=28
D/QCRILMSGTUNELSOCKET(1866):从地块到地块的ByteArray=5155414c434f4d4def0308000100000003
D/QCRILMSGTUNELSOCKET(1866):收到RIL_UNSOL_OEM_HOOK_原始信息
D/QcrilMsgTunnelSocket(1866):RIL_UNSOL_Oem_HOOK_RAW中的Oem ID为QUALCOMM
D/QcrilMsgTunnelSocket(1866):OEM ID检查通过
D/qcrimsgtunnelsocket(1866):RIL_UNSOL_OEM_HOOK_RAW中的响应ID为525295
D/QcrilMsgTunnelSocket(1866):响应ID 525295不在此过程中提供。
D/qcrimsgtunnelsocket(1866):通过通知程序向外部应用程序广播意图
D/qcrimsgtunnelifacemanager(1866):HandleMessageWhat=0
D/QCRILMSGTUNELIFACEMANAGER(1866):广播意图行动、未售出、响应、原始设备制造商、原始设备制造商
V/qcrimsgtunnelsocket(1866):读取前偏移量=0剩余=4计数读取=0
I/Google Maps Android API(23503):未能联系Google服务器。建立连接后将再次尝试
D/MobileDataStateTracker(785):默认值:setPolicyDataEnable(enabled=true)
E/Google Maps Android API(23503):加载地图失败。联系Google服务器时出错。这可能是身份验证问题(但可能是由于网络错误)。

试试下面的代码。这对我很有用

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:map="http://schemas.android.com/apk/res-auto"
    android:name="com.google.android.gms.maps.MapFragment"
    android:id="@+id/thapar_map"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"/>



setContentView(R.layout.maps);
        GoogleMap map;
        map = ((MapFragment) getFragmentManager().findFragmentById(R.id.thapar_map)).getMap();
        map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
        map.setPadding(5, 5, 5, 5);
        map.setMyLocationEnabled(true);

setContentView(R.layout.maps);
谷歌地图;
map=((MapFragment)getFragmentManager().findFragmentById(R.id.thapar_map)).getMap();
setMapType(GoogleMap.map\u TYPE\u HYBRID);
map.setPadding(5,5,5,5);
map.setMyLocationEnabled(true);

测试时需要使用另一个API密钥。它与从密钥库文件生成的API密钥不同

从eclipse-->windows-->首选项-->Android-->构建。使用此SHA1指纹,从Google API控制台获取另一个API密钥,并将其用于测试

在将APK上传到google play之前,不要忘记将其更改为生产版

更新: 我使用这种方式,效果很好。它与您使用的方式不同:

fragment_map.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <com.google.android.gms.maps.MapView
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</RelativeLayout>
下面是我如何将其添加到屏幕上的:

        MapFragment mapFragment = new MapFragment();
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction transaction = fragmentManager.beginTransaction();
        Bundle args = new Bundle();
        args.putString(MapFragment.TITLE, title);
        args.putDouble(MapFragment.LONG, longitude);
        args.putDouble(MapFragment.LAT, latitude);
        mapFragment.setArguments(args);
        transaction.replace(R.id.content_frame, mapFragment,"map");
        transaction.addToBackStack(null);
        transaction.commit();

我希望这能有所帮助。

据我所知,发生这个问题有三个原因

原因 1) 首先是缺乏互联网连接

2) 第二是你的谷歌api密钥不匹配

3) 第三,如果键是ok的,那么在生成键期间提供的包名称与项目包名称不完全相同

MapFragment mapFragment = new MapFragment(); FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); Bundle args = new Bundle(); args.putString(MapFragment.TITLE, title); args.putDouble(MapFragment.LONG, longitude); args.putDouble(MapFragment.LAT, latitude); mapFragment.setArguments(args); transaction.replace(R.id.content_frame, mapFragment,"map"); transaction.addToBackStack(null); transaction.commit();