Google Maps Android API V2
Introduction :
In Google map V2, You can use API calls to add markers, polygons, and overlays to a basic map, and to change the user's view of a particular map area.The API allows you to add these graphics to a map:
First you must add Google Play services as an Android library project as follows:
- Select File > Import > Android > Existing Android Code Into Workspace and click Next.
- Select Browse..., enter
<android-sdk-folder>/extras/google/google_play_services/libproject/google-play-services_lib
, and click Finish.
Getting Started :
Obtaining an API Key
If your application is registered with the Google Maps Android API v2 service, then you can request an API key. It's possible to register more than one key per project.
To get the key
- In the left navigation bar, click API Access.
- In the resulting page, click Create New Android Key....
- In the resulting dialog, enter the SHA-1 fingerprint, then a semicolon, then your application's package name. For example:
BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75;com.example.android.mapexample
- The Google APIs Console responds by displaying Key for Android apps (with certificates) followed by a forty-character API key, for example:
AIzaSyBdVl-cTICSwYKrZ95SuvNw7dbMuDt1KG0
- Copy this key value. You will use it in the next step.
- The Google Maps Android API v2 uses a new system of managing keys. Existing keys from a Google Maps Android v1 application, commonly known as MapView, will not work with the v2 API.
- To get SHA-1 fingerprint enter command in terminal: keytool -list -v -keystore debug.keystore
Adding the API Key to your application
- In
AndroidManifest.xml
, add the following element as a child of the<application>
element, by inserting it just before the closing tag</application>
:<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="your_api_key"/>
substituting your API key for your_api_key. This element sets the keycom.google.android.maps.v2.API_KEY
to the value your_api_key and makes the API key visible to anyMapFragment
in your application. - Add the following elements to your manifest. Replace
com.example.mapdemo
with the package name of your application.<permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> <uses-permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE"/>
- Save
AndroidManifest.xml
and re-build your application.
Specifying permissions
Besides permissions required by other parts of your application, you must add the following permissions in order to use the Google Maps Android API:
android.permission.INTERNET
Used by the API to download map tiles from Google Maps servers.com.google.android.providers.gsf.permission.READ_GSERVICES
Allows the API to access Google web-based services.<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
android.permission.WRITE_EXTERNAL_STORAGE
Allows the API to cache map tile data in the device's external storage area.
Requiring OpenGL ES version 2
Because version 2 of the Google Maps Android API requires OpenGL ES version 2, you must add a
<uses-feature>
element as a child of the<manifest>
element in AndroidManifest.xml
:<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
Sample Code:
Examples of how to add more robust code appear throughout this guide and in the sample code.
- In
main.xml
, add the following fragment.<?xml version="1.0" encoding="utf-8"?> <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.MapFragment"/>
- In
MainActivity.java
, add the following code.package com.example.mapdemo; import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }
- Build and run your application. You should see a map. If you don't see a map, confirm that you've completed all of the steps appearing earlier in this document.
Adding Map Code
private GoogleMap mMap;
...
mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
Change the Map Type
To set the type of a map, call the
GoogleMap
object's setMapType()
method, passing one of the type constants defined in GoogleMap
. For example, to display a satellite map:GoogleMap map;
...
// Sets the map type to be "hybrid"
map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
Add a marker
The below example demonstrates how to add a marker to a map. The marker is created at coordinates
0,0
, and displays the string "Hello world" in an infowindow when clicked.private GoogleMap mMap;
mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
mMap.addMarker(new MarkerOptions()
.position(new LatLng(0, 0))
.title("Hello world"));
The below snippet creates a marker with a custom icon.
private static final LatLng MELBOURNE = new LatLng(-37.81319, 144.96298);
private Marker melbourne = mMap.addMarker(new MarkerOptions()
.position(MELBOURNE)
.title("Melbourne")
.snippet("Population: 4,137,400")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow)));
Info windows
An info window allows you to display information to the user when they tap on a marker on a map. By default, an info window is displayed when a user taps on a marker if the marker has a title set. Only one info window is displayed at a time. If a user clicks on another marker, the current window will be hidden and the new info window will be displayed. You can show an info window programmatically by calling
The Maps API comes with some built-in UI controls that are similar to those found in the Google Maps application on your Android phone. You can toggle the visibility of these controls using the
showInfoWindow()
on the target marker. An info window can be hidden by calling hideInfoWindow()
.Info window click events
You can use an
OnInfoWindowClickListener
to listen to click events on an info window. You need to implement OnInfoWindowClickListener to activity.
@Override
public void onInfoWindowClick(Marker marker) {
}
public void onInfoWindowClick(Marker marker) {
}
Marker click events
You can use an
OnMarkerClickListener
to listen for click events on the marker. To set this listener on the map, callGoogleMap.setOnMarkerClickListener(OnMarkerClickListener)
. When a user clicks on a marker, onMarkerClick(Marker)
will be called and the marker will be passed through as an argument.Interacting with the map :
The Maps API comes with some built-in UI controls that are similar to those found in the Google Maps application on your Android phone. You can toggle the visibility of these controls using the UiSettings
class which can be obtained from a GoogleMap
with the GoogleMap.getUiSettings
method.
Zoom controls
The Maps API provides built-in zoom controls that appear in the bottom right hand corner of the map. These are enabled by default, but can be disabled by calling
UiSettings.setZoomControlsEnabled(boolean)
.Compass
The Maps API provides a compass graphic which appears in the top left corner of the map under certain circumstances.You can disable the compass appearing altogether by calling
UiSettings.setCompassEnabled(boolean)
.My Location button
The My Location button appears in the top right corner of the screen only when the My Location layer is enabled. When a user clicks the button, the camera animates to focus on the user's current location if the user's location is currently known. You can disable the button from appearing altogether by calling
UiSettings.setMyLocationButtonEnabled(boolean)
.Moving Camera
The following code snippets illustrate some of the common ways to move the camera using the Maps API.
private static final LatLng SYDNEY = new LatLng(-33.88,151.21);
private static final LatLng MOUNTAIN_VIEW = new LatLng(37.4, -122.1);
private GoogleMap map;
... // Obtain the map from a MapFragment or MapView.
// Move the camera instantly to Sydney with a zoom of 15.
map.moveCamera(CameraUpdateFactory.newLatLngZoom(SYDNEY, 15);
// Zoom in, animating the camera.
map.animateCamera(CameraUpdateFactory.zoomIn());
// Zoom out to zoom level 10, animating with a duration of 2 seconds.
map.animateCamera(CameraUpdateFactory.zoomTo(10), null, 2000);
// Construct a CameraPosition focusing on Mountain View and animate the camera to that position.
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(MOUNTAIN_VIEW) // Sets the center of the map to Mountain View
.zoom(17) // Sets the zoom
.bearing(90) // Sets the orientation of the camera to east
.tilt(30) // Sets the tilt of the camera to 30 degrees
.build(); // Creates a CameraPosition from the builder
map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
very nice & easy to understand blog...keep it up bro...
ReplyDeleteHi,
ReplyDeleteI have carried out by your steps upto map code(before Map Fragment).As output in emulator,am getting only Force close when running the app.
Kindly help.
very very good!! thank a lot
ReplyDelete@ gowtham jegannath :
ReplyDeleteYou will get force close on emulator because google play service is not available on it. So you have to run it on device.
the Google Map V2 is not supported by the virtual emulator, you have to take your project apk file and install it in the android phone(supports only from ver. 3.0 onwards)and after installing run the app. it will work for sure.
ReplyDeletei want to set bearing as well as zoom to show all my markers
ReplyDeleteHi ..its helping me ..but i want draw a poly line between two points and it should show a arrow at end point like "A to B " in B position i want arrow ..please help me its urgent for me...
ReplyDeletecan you help me in the step by step procedure to implement clustering markers in Google Maps Android API V2.
ReplyDeletetrying to import clusterkraf but showing errors in the eclipse ide..
some version prob can you send me the procedures to krunalpatelwelcome@gmail.com.
reply asap..working on clustering of markers & got stuck...
"Allows the API to cache map tile data in the device's external storage area."
ReplyDeleteIs there an example of how to do utilize this. I was under the impression that Google Maps Android API V2 does not support tile caching. Or perhaps it does but is not permit it without a special license.
In any case, I'd like to see how this works in android native maps ( not javascript enterprise maps)
thanks
ReplyDeleteGambling site: Top Online Casinos | Choices Casino
ReplyDeleteTop Online Casinos 바카라 사이트 · 1. Red Dog Casino · 2. Ignition Casino 카지노사이트 · 3. Intertops Casino · 4. El Royale Casino · 5. BoVegas Casino · 6. Las Atlantis Casino 메리트 카지노 주소 · 7. BoVegas Casino.