Android MapActivity : Couldn't get connection factory client

前端 未结 8 2076
不思量自难忘°
不思量自难忘° 2020-11-28 12:19

I\'m trying to get the Map demos working, as provided in the Google API sample projects.  I am using AVDs and have tried with versions 8, 10 and 11 and get the same issue.

相关标签:
8条回答
  • 2020-11-28 12:34

    I faced the same problem and the problem was that I missed when I set the appropriate layout to the MapActivity the code was

    setContentView(R.layout.main);
    

    the main.xml layout file doesn't contain any mapview

    it became

    setContentView(R.layout.mapview) 
    

    which have the following XML code

    <?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>
    

    The map is working fid right now , hope this would help

    Also you can check if you 've added any thing to your mapview layout because adding such views would result in this error

    0 讨论(0)
  • 2020-11-28 12:37

    i had exactly the same initial situation as you described.

    when you see the map tiles there are obviously some missing to see a position on the map:

    1. you need a location. i recognized that setting only a geo position via DDMS view to the emulator is not enough. you have to explicitly press every time the "Send" button in DDMS to trigger a location update on your emulator. (just to mention: on a real the device you have sometimes to walk a bit to make your device get a location update ;), i was so pissed off until i walked around thinking of what to do now ^^)

    2. you need a correct implementation of ItemizedOverlay with an correct OverlayItem. i wrote my own overlay which got bit "complicated". if you're not sure if your implementation is correct, use this guide to create an implementation with minimal changes Map view tutorial android developers

    or use this:

    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);
    }
    

    i want specially point out that you must call boundCenter or boundCenterBottom on the drawable. else it will not be drawn. be also careful if you use different markers in the same overlay with overlayItem.setMarker, that u call it there too.

    3. you have to move the view on the map to your point. you can achieve this like this:

    MapController mapController = mapView.getController();
    mapController.setCenter(point)
    

    i recognized that the function mapController.zoomToSpan does not work. (at least for me, i am still developing on this app). maybe its the same with animateTo. i did not try. set center works. (and setZoom level also).

    Maybe there is something in the points i mentioned which could lead to, that your map does not work like you want.

    Good luck!

    edit: i forgot to mention that i am still getting that factory client error even it works to get a valid location, real on device and fake on emulator via ddms send). i just ignore for now.

    0 讨论(0)
  • 2020-11-28 12:37

    Please make sure that you use permissions in your application AndroidManifest.xml.

    add these 3 lines in AndroidManifest.xml

    <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"/>
    

    And also make sure keystore is pointing to the keystore you created.

    In eclipse Check Window -> Preferences ->Android ->Build : Default Debug keystore, is pointing to the key you created using keytool, else use Browse button and point to the actual key.

    0 讨论(0)
  • 2020-11-28 12:39

    I had the same problem with below 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>
    

    Then i changed the main.xml to as below, the problem was solved

    <?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"
    />
    
    0 讨论(0)
  • 2020-11-28 12:44

    Somebody up there already said it in a comment: Restart the phone. Or if you're running in emulator: Restart the emulator.

    0 讨论(0)
  • 2020-11-28 12:46

    I had the same problem with "MapActivity Couldn't get connection factory client" The way I fixed the problem was very simple! I just uninstalled entire application and reinstalled it. It worked!!!

    0 讨论(0)
提交回复
热议问题