Before starting a new project of Google map V2,
we
need to go through some pre required steps. These steps involves importing
required library, generating SHA1 fingerprint and configuring maps in google
console.
1. Downloading Google Play
Services
we need to download google play
services from SDK manger.
Open Eclipse ⇒ Windows ⇒ Android
SDK Manager and check whether you have already downloaded Google Play Services
or not under Extras section. If not select play services and install the package.
2. Importing Google Play Services
into Eclipse
1. In Eclipse goto File ⇒ Import ⇒ Android ⇒ Existing Android Code Into Workspace
2. Click on Browse and select
Google Play Services project from your android sdk folder. You can locate play
services library project from
android-sdk-windows\extras\google\google_play_services\libproject\google-play-services_lib
3. Importantly while importing
check Copy projects into workspace option as shown in the below image.
3. Getting the Google Maps API
key
1. Same as in maps v1 we need to
generate SHA-1 fingerprint using java keytool. Open your terminal and execute
the following command to generate SHA-1 fingerprint.
keytool -list -v -keystore
"%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey
-storepass android -keypass android
For example as par my system:
C:\Program
Files\Java\jdk1.6.0_26\bin >keytool.exe -V -list -alias androiddebugkey
-keystore "C:\Documents and Settings\Administrator\.android \debug.keystore"
-storepass android -keypass android
Consider your jdk-bin path in the
first path place and your home user directory in thesecond path. For windows 7
it is like C:\Users\username\.android\debug.keystore
In the output you can see SHA 1
finger print.
2. Now open Google API Console
3. Select Services on left side
and turn on Google Maps Android API v2
4. Now select API Access on left
side and on the right side click on Create new Android key…
5. It will popup a window asking
the SHA1 and package name. Enter your SHA 1 and your android project package
name separated by semicolon ; and click on create.
note down the API key which
required later in our project.
4. Creating new Project
After completing required
configuration, It’s time to start our project.
1. In Eclipse create a new
project by going to File ⇒ New ⇒ Android Application Project and fill required details. I kept
my project name as Google Maps V2 and package name asinfo.androidhive.info
2. Now we need to use Google Play
Services project as a library to use project. So right click on project and
select properties. In the properties window on left side select Android. On the
right you can see aAdd button under library section. Click it and select google
play services project which we imported previously.
3. Add the Map Key in the
manifest file. Open AndroidManifest.xml file and add the following code before
tag. Replace the android:value with your map key which you got from google
console.
<!-- Goolge Maps API Key
-->
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="Your API Key"
/>
4. Google maps needs following permissions and
features.
ACCESS_NETWORK_STATE – To check
network state whether data can be downloaded or not
INTERNET – To check internet
connection status
WRITE_EXTERNAL_STORAGE – To write
to external storage as google maps store map data in external storage
ACCESS_COARSE_LOCATION – To
determine user’s location using WiFi and mobile cell data
ACCESS_FINE_LOCATION – To
determine user’s location using GPS
OpenGL ES V2 – Required for
Google Maps V2
Finally my AndroidManifest.xml
file looks like this (Replace the package name with your project package)
AndroidManifest.xml
<?xml version="1.0"
encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.prashant.googlemapsv2"
android:versionCode="1"
android:versionName="1.0" >
<permission
android:name="com.prashant.googlemapsv2".permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission
android:name="com.prashant.googlemapsv2".permission.MAPS_RECEIVE"
/>
<uses-sdk
android:minSdkVersion="12"
android:targetSdkVersion="17"
/>
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission
android:name="android.permission.INTERNET" />
<uses-permission
android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"
/>
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- Required to show current location
-->
<uses-permission
android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission
android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- Required OpenGL ES 2.0. for Maps V2
-->
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name">
<activity
android:name="com.prashant.googlemapsv2".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppBaseTheme">
<intent-filter>
<action
android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- Goolge API Key -->
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyBZMlkOv4sj-M5JO9p6wksdax4TEjDVLgo"
/>
</application>
</manifest>
5. New google maps are
implemented using MapFragments which is a sub class of Fragmentsclass. Open
your main activity layout file activity_main.xml file and add following code. I
usedRelativeLayout as a parent element. You can remove it and use MapFragment
directly.
activity_main.xml
<?xml version="1.0"
encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
6. Add the following code in your Main Activity java MainActivity.java
class.
MainActivity.java
public class MainActivity extends
Activity {
// Google Map
private GoogleMap googleMap;
@Override
protected void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
// Loading map
initilizeMap();
} catch (Exception e) {
e.printStackTrace();
}
}
private void initilizeMap() {
if (googleMap == null) {
googleMap = ((MapFragment)
getFragmentManager().findFragmentById(
R.id.map)).getMap();
// check if map is created
successfully or not
if (googleMap == null) {
Toast.makeText(getApplicationContext(),
"Sorry! unable to
create maps", Toast.LENGTH_SHORT)
.show();
}
}
}
@Override
protected void onResume() {
super.onResume();
initilizeMap();
}
}