MCPcopy Index your code
hub / github.com/airbnb/AirMapView

github.com/airbnb/AirMapView @v2.1.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.1.1 ↗ · + Follow
741 symbols 1,617 edges 56 files 68 documented · 9%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

AirMapView

Build Status

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

  1. Define AirMapView in your layout file xml <com.airbnb.android.airmapview.AirMapView android:id="@+id/map_view" android:layout_width="match_parent" android:layout_height="match_parent"/>

  2. Initialize in code java mapView = (AirMapView) findViewById(R.id.map_view); mapView.initialize(getSupportFragmentManager());

  3. Add markers/polylines/polygons java 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.

License

Copyright 2015 Airbnb, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Extension points exported contracts — how you extend this code

OnInfoWindowClickListener (Interface)
(no doc) [5 implementers]
library/src/main/java/com/airbnb/android/airmapview/listeners/OnInfoWindowClickListener.java
OnMapClickListener (Interface)
(no doc) [5 implementers]
library/src/main/java/com/airbnb/android/airmapview/listeners/OnMapClickListener.java
OnCameraMoveListener (Interface)
This event is triggered once as soon as the map camera starts moving and then is not triggered again until the next time [2 …
library/src/main/java/com/airbnb/android/airmapview/listeners/OnCameraMoveListener.java
OnCameraChangeListener (Interface)
(no doc) [4 implementers]
library/src/main/java/com/airbnb/android/airmapview/listeners/OnCameraChangeListener.java
OnMapMarkerClickListener (Interface)
(no doc) [4 implementers]
library/src/main/java/com/airbnb/android/airmapview/listeners/OnMapMarkerClickListener.java

Core symbols most depended-on inside this repo

add
called by 68
library/src/main/java/com/airbnb/android/airmapview/AirMapPolygon.java
pt
called by 36
library/src/main/assets/leaflet_1.3.1/leaflet.js
V
called by 34
library/src/main/assets/leaflet_1.3.1/leaflet.js
w
called by 33
library/src/main/assets/leaflet_1.3.1/leaflet.js
i
called by 32
library/src/main/assets/leaflet_1.3.1/leaflet.js
ht
called by 31
library/src/main/assets/leaflet_1.3.1/leaflet.js
n
called by 30
library/src/main/assets/leaflet_1.3.1/leaflet.js
isInitialized
called by 28
library/src/main/java/com/airbnb/android/airmapview/AirMapView.java

Shape

Method 401
Function 281
Class 43
Interface 14
Enum 2

Languages

Java62%
TypeScript38%
Kotlin1%

Modules by API surface

library/src/main/assets/proj4leaflet.min.js168 symbols
library/src/main/assets/leaflet_1.3.1/leaflet.js106 symbols
library/src/main/java/com/airbnb/android/airmapview/WebViewMapFragment.java58 symbols
library/src/main/java/com/airbnb/android/airmapview/NativeGoogleMapFragment.java53 symbols
library/src/main/java/com/airbnb/android/airmapview/AirMapView.java49 symbols
library/src/main/java/com/airbnb/android/airmapview/AirMapInterface.java37 symbols
library/src/main/java/com/airbnb/android/airmapview/AirMapMarker.java35 symbols
library/src/main/java/com/airbnb/android/airmapview/AirGoogleMapOptions.java27 symbols
library/src/main/java/com/airbnb/android/airmapview/AirMapPolygon.java21 symbols
sample/src/main/java/com/airbnb/airmapview/sample/MainActivity.java16 symbols
sample/src/main/java/com/airbnb/airmapview/sample/LogsAdapter.java14 symbols
library/src/main/java/com/airbnb/android/airmapview/AirMapPolyline.java14 symbols

For agents

$ claude mcp add AirMapView \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact