Android MapActivity:无法获得连接工厂客户端

| 我正在尝试按照Google API的要求运行Map演示 样本项目。我正在使用AVD,并尝试使用版本8、10 和11并得到相同的问题。 我已经生成了自己的调试密钥,并将其添加到项目中。我可以看到 应用程序上的地图启动,并且可以放大等-所以我正在获取地图 瓷砖,很好。 是-我具有清单中设置的正确权限和库 文件(根据样本)。 但是,我无法通过DDMS或Telnet在地图上设置位置。一世 在LogCat中看到以下错误: MapActivity:无法获得连接工厂客户端 我已经阅读了许多有关此问题的主题,但它们似乎总是 是由于API密钥错误导致的;我所没有的 检索地图图块。 因此,我创建了自己的项目来对此进行进一步测试,并正在执行 以下代码初始化我的地图:
    myLocationOverlay = new MyLocationOverlay(this, mapView);
       mapView.getOverlays().add(myLocationOverlay);
       myLocationOverlay.enableCompass();
       myLocationOverlay.enableMyLocation();
       Log.i(\"funkatron: \", \"ABOUT TO CALL RUN ON FIRST FIX\");
       myLocationOverlay.runOnFirstFix(new Runnable() {
           public void run() {
               String loc = \"we have a location, executing AnimateTo().
\"+myLocationOverlay.getMyLocation().toString();
               Log.i(\"funkatron:\",loc);

mapController.animateTo(myLocationOverlay.getMyLocation());
           }
       });
我看到了我的第一个日志语句,但是没有看到第二个,以及\“ MapActivity: 此时无法将连接工厂客户端\“写入LogCat 点。 我已经了解到SDK v8模拟器存在问题,所以我有 尝试使用v10和11-但仍然没有喜悦。 我尚未在实际设备上尝试过此操作-会很快完成。 在这个问题上的任何帮助将不胜感激-确实 莫名其妙的我;) 干杯     
已邀请:
我的情况与您描述的完全一样。 当您看到地图图块时,显然看不到地图上的某个位置: 1.您需要一个位置。 我认识到仅通过DDMS视图向模拟器设置地理位置是不够的。您必须每次在DDMS中显式按下“发送”按钮来触发模拟器上的位置更新。 (仅提:在实际设备上,您有时需要走一点路以使您的设备获得位置更新;),我非常生气,直到我四处走动思考现在该怎么做^^) 2.您需要使用正确的OverlayItem正确实现ItemizedOverlay。 我写了我自己的叠加层,有点“复杂”。如果您不确定自己的实现方式是否正确,请使用本指南创建更改最少的实现方式地图视图教程android开发人员 或使用此:
private class MyItemizedOverlay extends ItemizedOverlay {
    private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();

    public MyItemizedOverlay(Drawable defaultMarker) {
          super(boundCenterBottom(defaultMarker));
    }

    public void addOverlay(OverlayItem overlay) {
        mOverlays.add(overlay);
        populate();
    }

    @Override
    protected OverlayItem createItem(int i) {
      return mOverlays.get(i);
    }

    @Override
    public int size() {
      return mOverlays.size();
    }
}

private void updateLocationOverlay() {
    if (location == null) { return };
    List<Overlay> mapOverlays = mapView.getOverlays();
    Drawable drawable = this.getResources().getDrawable(R.drawable.XXXX);
    MyItemizedOverlay myItemizedOverlay = new MyItemizedOverlay(drawable);
    GeoPoint point = new GeoPoint((int)(location.getLatitude() * 1E6), (int)(location.getLongitude() * 1E6));

    OverlayItem overlayitem = new OverlayItem(point, \"Hola, Mundo!\", \"I\'m in Mexico City!\");
    myItemizedOverlay.addOverlay(overlayitem);
    mapOverlays.add(myItemizedOverlay);
}
我要特别指出,您必须在drawable上调用boundCenter或boundCenterBottom。否则将不会被绘制。还请注意,如果您在overlayItem.setMarker的同一叠加层中使用了不同的标记,那您也将其称为。 3.您必须将地图上的视图移动到您的位置。您可以这样实现:
MapController mapController = mapView.getController();
mapController.setCenter(point)
我认识到功能mapController.zoomToSpan不起作用。 (至少对我来说,我仍在开发此应用程序)。也许与animateTo一样。我没有尝试。设置中心工程。 (以及setZoom级别)。 也许我提到的几点可能会导致您的地图无法正常运行。 祝好运! 编辑:我忘了提到我仍然在收到工厂客户端错误,即使它可以通过ddms send获得有效的位置,在设备上是真实的,在模拟器上是假的。我现在暂时忽略。     
请确保您在应用程序AndroidManifest.xml中使用权限。 在AndroidManifest.xml中添加这3行
<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>
<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>
<uses-permission android:name=\"android.permission.INTERNET\"/>
还要确保密钥库指向您创建的密钥库。 在Eclipse Check Window-> Preferences-> Android-> Build中:Default Debug keystore,指向使用keytool创建的密钥,否则使用Browse按钮并指向实际密钥。     
各位开发人员大家好, 我也经历了这个问题,花了将近半天的时间来弄清楚发生了什么。最初,地图活动根本不会显示,并且我收到一条错误消息:“无法获得连接工厂客户端”,这又创建了另一个错误,“ java.io.IOException:服务器返回了3”。 原因是Google未能有效地与其开发基地进行有效的沟通,即在开发过程中,即在签署和发布您的应用程序之前,您必须使用在测试过程中使用的调试密钥对应用程序进行签名。这样做,请按照以下方法用您自己的密码替换[密码]和[密钥密码]。 从.android目录中,发出以下命令:
keytool -list -alias androiddebugkey -keystore debug.keystore storepass [password] -keypass [key password]
完成上述操作后,您将很高兴收到您的MD5证书指纹,可用于注册Google Maps API密钥。替换项目中的Google Maps API密钥,进行项目清理,然后重新运行应用程序。现在,您应该可以查看自己的Google Map,并且摆脱了烦人的错误。 如何获取Google Maps Android API密钥     
我对“ MapActivity无法获取连接工厂客户端”存在相同的问题 我解决问题的方式非常简单!我只是卸载了整个应用程序,然后重新安装了它。有效!!!     
我遇到了同样的问题,问题是当我为MapActivity设置适当的布局时错过了 该代码是
setContentView(R.layout.main);
main.xml布局文件不包含任何mapview 它变成了
setContentView(R.layout.mapview) 
其中具有以下XML代码
<?xml version=\"1.0\" encoding=\"utf-8\"?>

<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"
    android:id=\"@+id/main\"
    android:layout_width=\"fill_parent\" 
    android:layout_height=\"fill_parent\">
    <com.google.android.maps.MapView
        android:layout_width=\"fill_parent\" 
        android:layout_height=\"fill_parent\"
        android:enabled=\"true\"
        android:clickable=\"true\"
        android:apiKey=\"YOU_API_KEY\"
        />
</LinearLayout>
该地图正在运行中,希望这会有所帮助 另外,您可以检查是否已将任何内容添加到mapview布局中,因为添加此类视图会导致此错误     
发生这种情况似乎有多种原因。我已修复它,将我的项目构建目标更改为api 10(在项目/ Properties / Android上单击鼠标右键),然后在api级别15的模拟器上运行(尽管非常非常慢!)。     
我在main.xml下面有同样的问题
<?xml version=\"1.0\" encoding=\"utf-8\"?>    
<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"
    android:layout_width=\"fill_parent\"
    android:layout_height=\"fill_parent\"
    android:orientation=\"vertical\" >

    <com.google.android.maps.MapView
        xmlns:android=\"http://schemas.android.com/apk/res/android\"
        android:id=\"@+id/mapview\"
        android:layout_width=\"fill_parent\"
        android:layout_height=\"fill_parent\"
        android:clickable=\"true\"
        android:apiKey=\"Your API-KEY\"
    />

</LinearLayout>
然后我将main.xml更改为如下,问题已解决
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<com.google.android.maps.MapView
        xmlns:android=\"http://schemas.android.com/apk/res/android\"
        android:id=\"@+id/mapview\"
        android:layout_width=\"fill_parent\"
        android:layout_height=\"fill_parent\"
        android:clickable=\"true\"
        android:apiKey=\"Your API-KEY\"
/>
    
那里有人已经在评论中说过:重新启动电话。 或者,如果您正在仿真器中运行:重新启动仿真器。     

要回复问题请先登录注册