In this article, we will develop an Android application containing Google Maps using new Google Maps Android API v2 which is released on 03-Dec-2012.
This application is developed in Eclipse 4.2.1 with ADT plugin ( 21.0.0 ) and Android SDK ( 21.0.0 ) and is is tested in a real Android Phone with Android version ( 2.3.6 ).
1. Download and configure Google Play Services Library in Eclipse
Google Map for Android is now integrated with Google Play Services. So we need to set up Google Play Service Library for developing Google Map application in Android.
Please follow the given below link to setup Google Play Service library in Eclipse.
http://developer.android.com/google/play-services/setup.html
2. Create a new Android Application Project namely “LocationGoogleMapV2Demo”
3. Configure Android Application Project
4. Design Application Launcher Icon
5. Create a blank activity
6. Enter Main Activity Details
7. Link to Google Play Service Library
8. Get the API key for Google Maps Android API v2
We need to get an API key from Google to use Google Maps in Android application. Please follow the given below link to get the API key for Google Maps Android API v2.
https://developers.google.com/maps/documentation/android/start
9. Add Android Support library to this project
By default, Android support library (android-support-v4.jar ) is added to this project by Eclipse IDE to the directory libs. If it is not added, we can do it manually by doing the following steps :
- Open Project Explorer by Clicking “Window -> Show View -> Project Explorer”
- Right click this project
- Then from popup window, Click “Android Tools -> Add Support Library “
10. Update the file AndroidManfiest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="in.wptrafficanalyzer.locationgooglemapv2demo"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" />
<permission
android:name="in.wptrafficanalyzer.LocationGoogleMapV2Demo.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="in.wptrafficanalyzer.LocationGoogleMapV2Demo.permission.MAPS_RECEIVE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<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"/>
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="in.wptrafficanalyzer.locationgooglemapv2demo.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="YOUR_API_KEY"/>
</application>
</manifest>
Note : In the above code, replace “YOUR_API_KEY” with the api key, you generated in step 8.
11. Update the layout file to display Google Map using SupportMapFragment
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment"/>
</RelativeLayout>
12. Update the file src/in/wptrafficanalyzer/locationgooglemapv2demo/MainActivity.java
package in.wptrafficanalyzer.locationgooglemapv2demo;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
13. Running the application
14. Download Source Code







Hi George, Thanks for the tuts. Can you tell me how you ran the map on emulator?? I followed the link ” . . . ” and installation were successful but when I ran your program I got a screen with “this app won’t run unless you update google play services” text. Any vision you would like to throw how you ran it?
Thanks in advance.
Hi,
Ideally, Google Map Android API V2 cannot run in emulators. Because, Google Map Android API V2 is integrated with Google Play Services and is not supported on the Android emulator.
Thank you for such instant reply. Even I tried to run on my device but ends with force close. Haven’t tried in debug mode. I’l be glad if you can you suggest the proper way to run it and view the map.
I am trying to work with the example u have provided and followed every step which u have mentioned out here.. I am having problem with the 7th step where you have showed image in which you link the google play service library with the project when i am trying that i am not getting the library in the second part where you have marked islibrary.and when i run the application i am getting layout inflator error pasting the error for your reference.
01-19 18:47:34.875: E/AndroidRuntime(15640): FATAL EXCEPTION: main
01-19 18:47:34.875: E/AndroidRuntime(15640): java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable
01-19 18:47:34.875: E/AndroidRuntime(15640): at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source)
01-19 18:47:34.875: E/AndroidRuntime(15640): at com.google.android.gms.maps.SupportMapFragment.onInflate(Unknown Source)
01-19 18:47:34.875: E/AndroidRuntime(15640): at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:279)
Hello Sanket,
Please ensure that, you have successfully installed and imported the Google Play Services library into the Eclipse Workspace.
If the library is imported successfully then it will be listed in the Project Explorer View.
I tried running your app on my Samsung galaxy S, version 4.0.4, even though the app runs I get a blank white screen with the zoom buttons(the “+” and “-”), but no map at all. I’m kinda new to this whole Google API, any help that you can provide will be very appreciated
Thanks for the tutorial you made it look incredibly simple.
Please ensure that, the correct API key is entered in the AndroidManifest.xml.
I kept checking that, and constantly made new ones and reused them on the Manifest. I’m starting to question my android device. :s
My Project’s manifest is
and my device version is 4.0.4, could this cause a problem with the Google API v2.0 ?
rewriting what didn’t show up:
“My Project’s manifest is
android:minSdkVersion=”15″
android:targetSdkVersion=”16″
and my device version is 4.0.4, could this cause a problem with the Google API v2.0 ?”
Did you ever resolve this Jorge? I’m having the same exact issue and it’s driving me batty. Rechecked my API key a dozen times, and recreated it several times as well.
Anybody resolved this yet? I am facing this issue since a week, white screen with the zoom buttons(the “+” and “-”), but no map at all.
Once you entered the correct Android API key, please clean ( Project -> Clean ) your project from Eclipse IDE before running the application.
Thanks for you quick reply George
I have resolved my issue, issue was wrong map keys.
Wrong service was enabled. Make sure the “Google Maps Android API v2″, not “Google Maps API v2″ is enabled and re-generate the API key.
Thanks a LOT GEORGE The GREAT!!
I am getting a “Binary XML file line #14: Error inflating class fragment” error. Kept getting that and driving me crazy. The device I am testing it with is Gingerbread 2.3.6 Samsung Galaxy Y with Googleplay.
I’m getting the same error.
I’ve double checked that play services are properly imported. I downloaded the source code directly.
Please ensure that, the class MainActivity extends FragmentActivity instead of Activity class.
Thank you SO MUCH for this!
Over the past couple of weeks I must have followed the best part of a dozen so-called tutorials on how to get maps running in an app and not a single one has worked – they all seem to be missing something or other that I’ve been unable to work out.
But your tutorial worked first time. Absolutely superb. Thank you again.
i try your source and I am getting a “Binary XML file line #7: Error inflating class fragment” error.
please help me
Please ensure that, Step 7 (Link to Google Play Service Library) is done
i have did it (step 7) …. pfffttt
Ensure that the class MainActivity is extending the class FragmentActivity
i can run this application.. but the map does not appear and i got message in log cat –> “could not find class ‘maps.i.k’, referenced from method maps.z.ag.a
>>could not find class ‘maps.i.k’, referenced from method maps.z.ag.a
Re-install the application and try again. Before re-installing, ensure that, you entered the correct api key.
i use your api… can’t it?
i use 4.04 in my phone… does it matter?
I tried this one but its not worked on Galaxy Y and always suffer with Force Close error. But its works nicely on some kind of devices like Xperia U , Xperia Sola, Asus nexsus 7 tab etc.. Can u tell me why its not worked on Galaxy y (2.3 gingerbread)…
hey.. could u please help me in building my google map v2 .. its driving me crazy i’ve been trying for a whole week and i can’t figure out whats wrong with the program ..
here it is my code ..
xml file:
my java file:
package com.example.e_order;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.gms.maps.SupportMapFragment;
public class Order_map extends SupportMapFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.activity_order_map, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
}
my mainifist.xml :
my logcat when executing the map activity:
03-16 20:21:20.378: E/AndroidRuntime(745): FATAL EXCEPTION: main
03-16 20:21:20.378: E/AndroidRuntime(745): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.e_order/com.example.e_order.Order_map}: java.lang.ClassCastException: com.example.e_order.Order_map
03-16 20:21:20.378: E/AndroidRuntime(745): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
03-16 20:21:20.378: E/AndroidRuntime(745): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
03-16 20:21:20.378: E/AndroidRuntime(745): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
03-16 20:21:20.378: E/AndroidRuntime(745): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
03-16 20:21:20.378: E/AndroidRuntime(745): at android.os.Handler.dispatchMessage(Handler.java:99)
03-16 20:21:20.378: E/AndroidRuntime(745): at android.os.Looper.loop(Looper.java:123)
03-16 20:21:20.378: E/AndroidRuntime(745): at android.app.ActivityThread.main(ActivityThread.java:4627)
03-16 20:21:20.378: E/AndroidRuntime(745): at java.lang.reflect.Method.invokeNative(Native Method)
03-16 20:21:20.378: E/AndroidRuntime(745): at java.lang.reflect.Method.invoke(Method.java:521)
03-16 20:21:20.378: E/AndroidRuntime(745): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
03-16 20:21:20.378: E/AndroidRuntime(745): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
03-16 20:21:20.378: E/AndroidRuntime(745): at dalvik.system.NativeStart.main(Native Method)
03-16 20:21:20.378: E/AndroidRuntime(745): Caused by: java.lang.ClassCastException: com.example.e_order.Order_map
03-16 20:21:20.378: E/AndroidRuntime(745): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
03-16 20:21:20.378: E/AndroidRuntime(745): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
03-16 20:21:20.378: E/AndroidRuntime(745): … 11 more
Thank you
[2013-03-25 20:39:32 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/google/android/gms/auth/GoogleAuthException;
[2013-03-25 20:39:32 - LocationDistanceTimeMapV2] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/google/android/gms/auth/GoogleAuthException;
please help solution….
Please ensure that, you entered the correct API key in the file AndroidManifest.xml
Hi George,
It’s a great tutorial, in a simple way.
hai george, i have been tried it, but white screen with zoom in and out always appears. the key is correct,.. map isn’t appear
Hi… I have tried this way, but I am getting error that
[2013-05-06 14:07:52 - KiwiApp] ERROR: Application requires API version 11. Device API version is 10 (Android 2.3.6).
I am using android mobile of 2.3.6 version.I am designing my app in android 4.0.3 in Eclipse.
please solve my problem.
thanks in advance