A view abstraction to provide a map user interface with various underlying map providers
AirMapView
AirMapView is a view abstraction that enables interactive maps for devices with and without Google Play Services. It is built to support multiple native map providers including Google Maps V2 and soon Amazon Maps V2. If a device does not have any supported native map provider, AirMapView will fallback to a web based map provider (currently Google Maps). Easy to integrate, it is a drop-in replacement for the Google Maps V2 package. AirMapView's original author is Nick Adams.
Features
- Google Maps V2
- Swap map providers at runtime
- Web based maps for devices without Google Play Services
Download
Grab via Gradle:
compile 'com.airbnb.android:airmapview:1.8.0'
Snapshots of the development version are available in Sonatype's snapshots
repository.
Sample App
The project includes a sample app which uses AirMapView. The sample app allows toggling between map providers, exemplifies adding map markers, and displays various callback information. The sample project can be built manually or you can download the APK.
How to Use
-
Define
AirMapView
in your layout file<com.airbnb.android.airmapview.AirMapView android:id="@+id/map_view" android:layout_width="match_parent" android:layout_height="match_parent"/>
-
Initialize in code
mapView = (AirMapView) findViewById(R.id.map_view); mapView.initialize(getSupportFragmentManager());
-
Add markers/polylines/polygons
map.addMarker(new AirMapMarker(latLng, markerId) .setTitle("Airbnb HQ") .setIconId(R.drawable.icon_location_pin));
Mapbox Web setup
To use Mapbox Web maps in AirMapView, you'll need to sign up for a free account with Mapbox. From there you'll use an Access Token and Map ID in your AirMapView app. They're are then included in your app's AndroidManifest.xml
file as meta-data
fields.
<meta-data
android:name="com.mapbox.ACCESS_TOKEN"
android:value=ACCESS_TOKEN/>
<meta-data
android:name="com.mapbox.MAP_ID"
android:value=MAP_ID/>
Native Google Maps setup
With AirMapView, to support native Google maps using the Google Maps v2 SDK you will still need to set up the Google Maps SDK as described here. Follow all the instructions except the one about adding a map since AirMapView takes care of that for you. See the sample app for more information about how to set up the maps SDK.