In this tutorial we will walk through the process of integrating Google Maps API V2 into an Android project.
(Source code available on GitHub)
The necessary steps in order to integrate the Google Maps V2 are :
- Install Google Play services
- Get the Google Maps API Key
- Update the AndroidManifest file with other settings
- Display a MapFragment
1. Install Google Play services
The version 2 of Google Maps now is part of the Google Play services SDK, that is why google-play-services lib should be installed first.
Start the Android SDK Manager and choose to install Google Play services from the Extras category:
After the sdk manager completes the installation, go to <android_sdk_folder>/extras/google/google_play_services/libproject
and copy the google-play-services_lib to the location where you maintain your Android projects.
Then import the library project into your workspace, and reference it in your Android project.
2. Get the Google Maps API Key
In order to use Google Maps API in your project you need a valid Google Maps API key. The key can be obtained via the Google APIs Console. You will have to provide the SHA-1 fingerprint and the package name of your application.
Please note that if you already hold a map key from the Google Maps Android V1, also known as MapView, you still will need get a new API key, as the old key won’t work with the V2 API.
2.1 Generate SHA-1 certificate fingerprint
To display the SHA-1 fingerprint, first you need to decide for what type of certificate do you need to generate the fingerprint: for the debug certificate, or for the release certificate.
In this example we well consider displaying the fingerprint for the debug certificate.
The file name of debug certificate is called debug.keystore, and it is located on C:\Users\your_user_name\.android\ on Windows, and on ~/.android/ on Linux.
If you are on a Linux, open the terminal and run the following command:
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
If you are on a Windows, open the command prompt and run this:
keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android
Copy the SHA1 fingerprint and store it somewhere for later use.
(Note that if the command prompt complains that keytool is not a recognizable command, you can find it your java JDK/bin folder. cd there and run the command from that folder.)
2.2 Create an API Project
Navigate to Google APIs Console and create a new project, if you haven’t used Google APIs Console before. Then click on the Services link from the left menu:
and from the presented list of of services toggle Google Maps Android API V2:
(Please make sure you namely select “Google Maps Android API V2″, not Google Maps API v2, nor Google Maps API v3)
2.3 Obtain an API Key
a) From the left menu click on API Access
b) Then click on Create New Android Key
c) In the resulting dialog, enter the SHA-1 fingerprint, followed by a semicolon, and then your application package name.
For example:
95:F7:64:E9:3D:D44:70:EF:CB:F9:D9:14:BF:72:88:B4:E8:D7:11:E9;com.example.mapsv2
As a result the page displays a new section entitled Key for Android apps (with certificates), followed by your API key that looks something like this:
AIzaZyAcQKLEyHsamGpNLHdn8wd5-wuCqBnJ3Rk
2.4 Add the API key to AndroidManifest file
Open the AndroidManifest file and add the following element as a child of application
tag:
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="YOUR_API_KEY"/>
replacing the YOUR_API_KEY with your real API key.
3. Update the AndroidManifest file with other settings
In order to use Google Maps Android API we need to declare a few permissions and specify that the application requires OpenGL ES version 2:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" //... > <uses-feature android:glEsVersion="0x00020000" android:required="true" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> //... </manifest>
4. Display a MapFragment
Displaying the maps is as simple as declaring a fragment in the xml layout with the name com.google.android.gms.maps.MapFragment
.
If you would like to make your application compatible with older devices, then you’ll have to use the Android Support Library and reference SupportMapFragment instead of MapFragment. The below example uses the Android Support Library.
The activity_main.xml layout:
<fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/maps_fragment" android:layout_width="match_parent" android:layout_height="match_parent" android:name="com.google.android.gms.maps.SupportMapFragment" />
and the MainActivity.java:
public class MainActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
If everything was configured correctly, then when running this example you should see a map.
Full source code can be downloaded from GitHub: https://github.com/vgrec/MapsV2Example
