2011-10-03 90 views
2

我正在为Android开发一个简单的Google地图应用程序。我正在使用Eclipse和一个Android虚拟设备。运行应用程序时,不显示任何图块,并且显示消息“无法获取连接工厂客户端”。Google地图不会加载

我看过,看起来像是一个错误,但有些人说他们的应用程序工作。我试过在我的虚拟设备(2.2)上使用API​​ 1.6,2.1,2.2,并且它们都没有工作。

我从从debug.keystore获得的MD5获得了我的API密钥。

我该如何解决问题?我只是发现有同样问题的人,但任何解决方案。

清单:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="uniovi.pfc" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <uses-sdk android:minSdkVersion="4" /> 

    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <uses-library android:name="com.google.android.maps"/> 
     <activity android:name=".SimpleMap2Activity" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

    </application> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" > 
    </uses-permission> 
    <uses-permission android:name="android.permission.INTERNET" > 
    </uses-permission> 
    <user-permission android:name="android.permission.ACCESS_COARSE_LOCATION"> 
    </user-permission> 
</manifest> 

XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
<com.google.android.maps.MapView 
    android:id="@+id/mapview1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:enabled="true" 
    android:clickable="true" 
    android:apiKey="0YSU8-p-YkHYQ2lit-vAsh2U0jW5zV3l_YQVlvw" />  

</LinearLayout> 

代码:

package uniovi.pfc; 

import com.google.android.maps.GeoPoint; 
import com.google.android.maps.MapActivity; 
import com.google.android.maps.MapController; 
import com.google.android.maps.MapView; 

import android.os.Bundle; 
import android.view.KeyEvent; 
import android.view.Window; 
import android.view.WindowManager; 

public class SimpleMap2Activity extends MapActivity { 

    private MapView mapView=null; 
    private MapController mapController=null; 
    private GeoPoint geoPoint=null; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.main); 

     mapView = (MapView) findViewById(R.id.mapview1); 
     mapController = mapView.getController(); 

     String coordinates[] = { "40.747778", "-73.985556" }; 
     double lat = Double.parseDouble(coordinates[0]); 
     double lng = Double.parseDouble(coordinates[1]); 

     geoPoint = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6)); 

     mapController.animateTo(geoPoint); 
     mapController.setZoom(5); 
     mapView.invalidate(); 
    } 

    @Override 
    protected boolean isRouteDisplayed() { 
     // TODO Auto-generated method stub 
     return false; 
    } 

    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     switch (keyCode) { 
     case KeyEvent.KEYCODE_I: 
      mapController.zoomIn(); 
      break; 
     case KeyEvent.KEYCODE_O: 
      mapController.zoomOut(); 
      break; 

     } 
     return super.onKeyDown(keyCode, event); 
    } 

} 
+0

你是否在互联网后面使用代理..? http://stackoverflow.com/questions/6911531/unable-to-show-google-maps-using-wifi-behind-a-proxy –

回答

4

最后,问题是地图apiKey。这个话题在互联网上没有很好的解释。

不久,我就如下解释:

  1. 使用地图成一个Android的虚拟机,可以使用debug.keystore
  2. 使用地图变成一个真正的Android设备,你需要创建一个密钥进入一个新的密钥库。如果您右键单击该项目并将其导出为已签名的apk,则Eclipse可以为您执行此操作。
  3. 在这两种情况下,您需要转到控制台,然后在java jdk/bin /文件夹中执行名为keytool.exe的Java工具。
  4. 如果keytool为您提供SHA1代码而不是MD5,则问题可能在于您使用的是Java 7.将-v参数添加到keytool调用以进入详细模式,并且您还将获得MD5 Google问您的问题对于。
+0

嘿罗马请你可以解释我多一点即时通讯面临同样的问题http: //stackoverflow.com/questions/7951488/android-mapview-different-in-phone-and-emulator请让我知道如何解决它。 – Sunny

+0

我自己也有类似的问题,这也是修复。 –