Android MapActivity : Couldn't get connection factory client

前端 未结 8 2168
不思量自难忘°
不思量自难忘° 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: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 mOverlays = new ArrayList();
    
        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 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.

提交回复
热议问题