How to generate and use Google MAP API 2

Posted: February 26, 2013 in Android, Knowledge, Technology
Tags: , , ,

We are about to implement MAP API2 in our project, here its Glimpse,

“https://developers.google.com/maps/documentation/android/”

  1.  do login here, https://code.google.com/apis/console/
  2.  on left side panel click on “Services”
  3.  find the service “Google Maps Android API v2” turn it on. Accept the terms and condition.
  4.  Now go back and click on “API Access”
  5.  Click on “Create new Android Key”
  6.  Paste SHA1 fingerprint there.

e.g., 9A:3D:9C:57:B6:46:E2:1C:EC:CF:BD:D3:EA:A6:B7:81:27:49:69:1A;com.example

here com.example – its an application package name

a. what is SHA1 key here?
Its a android debug keystore, where android app is Developed. when Signed APK is generated, this SHA1 will be regenerate using new keystore of application.
b. how to generate that?
open command prompt, and then

C:\Program Files\Java\jdk1.6.0_20\bin>keytool -list -v -keystore “c:\Users\admin\.android\debug.keystore”

you will prompt for password, enter “android” without qoute
It will give you the rtesult like this,

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

Alias name: androiddebugkey
Creation date: Nov 5, 2012
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Android Debug, O=Android, C=US
Issuer: CN=Android Debug, O=Android, C=US
Serial number: 50975212
Valid from: Mon Nov 05 11:13:46 IST 2012 until: Wed Oct 29 11:13:46 IST 2042

Certificate fingerprints:
MD5: BD:30:DD:77:0F:BE:82:A1:20:59:46:28:E7:11:E2:C8
SHA1: 9A:3D:9C:57:B6:46:E2:1C:EC:CF:BD:D3:EA:A6:B7:81:27:49:69:1A
Signature algorithm name: SHA1withRSA
Version: 3

*******************************************
*******************************************

C:\Program Files\Java\jdk1.6.0_20\bin>

this SHA1 is of my Computer local Keystore.

After generating new aandroid key,
it will be listed in your page, with Title saying “Key for Android apps (with certificates)”
You have to give me that API Key for implement MAP in application. It will look like “AIzaSyBmWleqdGClIWXXhgMbKAt-0aBxdohmmaM”

Then and then MAP can be loaded.

NOTE: If you are not getting this then please follow this link, https://developers.google.com/maps/documentation/android/start#the_google_maps_api_key

Now lets start code in Project,

create on layout file, map_activity.xml
and paste this code,

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/asdf"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <fragment
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.MapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </fragment>

</LinearLayout>

Now, create one Class file in your project, MapActivity.java

Code it like this,


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.OnMapLongClickListener;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.example.R;

public class MapActivity extends Activity {

	private final String tag = getClass().getName();

	private GoogleMap googleMap;
	private Double lat, lon;
	private LatLng latLng;

	@Override
	protected void onCreate(Bundle arg0) {
		super.onCreate(arg0);
		 setContentView(R.layout.map_activity);

	/**
	*provide lat long
	*/
			lat =  gpsLocationTracker.getLatitude();
			lon =  gpsLocationTracker.getLongitude();

	        latLng = new LatLng(lat, lon);
	        try {

	        	googleMap = ((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
				CameraPosition cp = new CameraPosition.Builder()
				.target(new LatLng(lat,lon))
				.zoom(12)
				.build();
				googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cp));

				/*adding custom marker on the map*/
				googleMap.addMarker(new MarkerOptions()
						.draggable(true)
						.position(latLng)
						.title("My First Marker")
						.snippet(""+latLng)
						.icon(BitmapDescriptorFactory
								.fromResource(R.drawable.ic_launcher)));
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

	}

	}

Now, in AndroidManifest.xml

<uses-sdk
        android:minSdkVersion="11"
        android:targetSdkVersion="16" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

    <!-- MAP API V2 -->
    <permission
        android:name="com.example.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.example.permission.MAPS_RECEIVE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />

    <!-- MAP API V2 -->
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

now inside Application tag

<!-- MAP Api V2 -->
<!-- Place your ANDROID API KEY for MAP at res/string/mapv2 -->
        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="@string/mapv2" />
<activity android:name="com.plunder.utility.MapActivity" >

NOTE: Don’t forget to include Library project, you can find it here

Leave a comment