Export to GitHub

osmdroid - HowToUseGoogleWrapper.wiki


Introduction

The osmdroid Google wrapper allows you to easily switch between a Google MapView and an osmdroid MapView by letting the application refer to the IMapView interface instead of the specific implementation.

Details

In your code you could get the map view preference and then instantiate a view of the preferred type. This will be assigned to an IMapView variable. From then on the rest of the code can use the map view without regard to what type it is.

// member variable IMapView mMapView;

// create the required type of MapView mMapView = googleView ? new com.google.android.maps.MapView(...) : new org.osmdroid.views.MapView(...);

// you can then use it regardless of which type it is, for example mMapView.getController().zoomIn();

For some operations you may need to do more than simply instantiation, for example adding overlays.

if(googleView) { com.google.android.maps.MapView mapView = new com.google.android.maps.MapView(...); com.google.android.maps.MyLocationOverlay myLocationOverlay = new com.google.android.maps.MyLocationOverlay(...); mapView.getOverlays().add(myLocationOverlay); mMapView = mapView; } else { org.osmdroid.views.MapView mapView = new org.osmdroid.views.MapView(...); org.osmdroid.views.overlay.MyLocationOverlay myLocationOverlay = org.osmdroid.views.overlay.MyLocationOverlay(...); mapView.getOverlays().add(myLocationOverlay); mMapView = mapView; }

There's also more ways of instantiating the MapView, for example mMapView = (IMapView) findViewById(R.id.map);

Hopefully these samples make the idea of the Google wrapper clear.