Sei sulla pagina 1di 22

How to use Google Maps in Android - android10 Page 1 of 22

search...

Home Get Started Blog Articles Forums Free Market Wikidroid10

ARTICLES Home Location/Maps


CATEGORIES
How to use Google Maps in Android
White Papers Wednesday, 08 December 2010 14:05 Fernando Cejas
General Location/Maps
Programming
Full Applications
Data Storage
Multimedia ( 3 Votes )
Security/Permissions
Graphics/Audio/Video Share
Libraries
Location/Maps
User Interface
Introduction
Tricks/Secrets
Google Maps is one of the many applications bundled with the Android platform. In addition to
Other
simply using the Maps application, you can also embed it into your own applications and make it do
some very cool things. In this article, I will show you how to use Google Maps in your
Android applications and how to programmatically perform the following:
USER LOGIN
Change the views of Google Maps
Username Obtain the latitude and longitude of locations in Google Maps
Perform geocoding and reverse geocoding
Add markers to Google Maps
Remember me

LOGIN
Creating the Project
Forgot login?
Using Eclipse, create a new Android project and name GoogleMaps as shown in Figure 1.
Register

http://www.android10.org/index.php/articleslocationmaps/253-how-to-use-google-maps-i... 12/16/2010
How to use Google Maps in Android - android10 Page 2 of 22

Figure 1 Creating a new Android project using Eclipse

Obtaining a Maps API key


Beginning with the Android SDK, you need to apply for a free Google Maps API key before you
can integrate Google Maps into your Android application. To apply for a key, you need to follow the
series of steps outlined below. You can also refer to Google's detailed documentation on the
process at http://code.google.com/android/toolbox/apis/mapkey.html.

First, if you are testing the application on the Android emulator, locate the SDK debug certificate
located in the default folder of "C:\Documents and Settings\<username>\Local
Settings\Application Data\Android". The filename of the debug keystore is debug.keystore.
For deploying to a real Android device, substitute the debug.keystore file with your own keystore
file. In a future article I will discuss how you can generate your own keystore file.

For simplicity, copy this file (debug.keystore) to a folder in C:\ (for example, create a folder
called "C:\Android").

Using the debug keystore, you need to extract its MD5 fingerprint using the Keytool.exe application
included with your JDK installation. This fingerprint is needed to apply for the free Google Maps
key. You can usually find the Keytool.exe from the "C:\Program
Files\Java\<JDK_version_number>\bin" folder.

Issue the following command (see also Figure 2) to extract the MD5 fingerprint.

keytool.exe -list -alias androiddebugkey -keystore "C:\android\debug.keystore" -storepass android -


keypass android

Copy the MD5 certificate fingerprint and navigate your web browser to:
http://code.google.com/android/maps-api-signup.html. Follow the instructions on the page to
complete the application and obtain the Google Maps key.

http://www.android10.org/index.php/articleslocationmaps/253-how-to-use-google-maps-i... 12/16/2010
How to use Google Maps in Android - android10 Page 3 of 22

Figure 2 Obtaining the MD5 fingerprint of the debug keystore

To use the Google Maps in your Android application, you need to modify your AndroidManifest.xml
file by adding the <uses-library> element together with the INTERNET permission:

1 <?xml version="1.0" encoding="utf-8"?>


2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="net.learn2develop.GoogleMaps"
4 android:versionCode="1"
5 android:versionName="1.0.0">
6 <application android:icon="@drawable/icon" android:label="@string/app_name"
7
8 <uses-library android:name="com.google.android.maps" />
9
10 <activity android:name=".MapsActivity"
11 android:label="@string/app_name">
12 <intent-filter>
13 <action android:name="android.intent.action.MAIN"
14 <category android:name="android.intent.category.LAUNCHER"
15 </intent-filter>
16 </activity>
17 </application>
18
19 <uses-permission android:name="android.permission.INTERNET" />
20
21 </manifest>
</xml>

Displaying the Map


To display the Google Maps in your Android application, modify the main.xml file located in the
res/layout folder. You shall use the <com.google.android.maps.MapView> element to
display the Google Maps in your activity. In addition, let's use the <RelativeLayout> element to
position the map within the activity:

http://www.android10.org/index.php/articleslocationmaps/253-how-to-use-google-maps-i... 12/16/2010
How to use Google Maps in Android - android10 Page 4 of 22

1 <?xml version="1.0" encoding="utf-8"?>


2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="fill_parent"
4 android:layout_height="fill_parent">
5
6 <com.google.android.maps.MapView
7 android:id="@+id/mapView"
8 android:layout_width="fill_parent"
9 android:layout_height="fill_parent"
10 android:enabled="true"
11 android:clickable="true"
12 android:apiKey="0l4sCTTyRmXTNo7k8DREHvEaLar2UmHGwnhZVHQ"
13 />
14
</RelativeLayout>

Notice from above that I have used the Google Maps key that I obtained earlier and put it into the
apiKey attribute.

In the MapsActivity.java file, modify the class to extend from the MapActivity class, instead of
the normal Activity class:

1 package net.learn2develop.GoogleMaps;
2
3 import com.google.android.maps.MapActivity;
4 import com.google.android.maps.MapView;
5 import android.os.Bundle;
6
7 public class MapsActivity extends MapActivity
8 {
9 /** Called when the activity is first created. */
10 @Override
11 public void onCreate(Bundle savedInstanceState)
12 {
13 super.onCreate(savedInstanceState);
14 setContentView(R.layout.main);
15 }
16
17 @Override
18 protected boolean isRouteDisplayed() {
19 return false;
20 }
21 }

Observe that if your class extends the MapActivity class, you need to override the
isRouteDisplayed() method. You can simply do so by setting the method to return false.

That's it! That's all you need to do to display the Google Maps in your application. Press F11 in
Eclipse to deploy the application onto an Android emulator. Figure 3 shows the Google map in all
its glory.

http://www.android10.org/index.php/articleslocationmaps/253-how-to-use-google-maps-i... 12/16/2010
How to use Google Maps in Android - android10 Page 5 of 22

Figure 3 Google Maps in your application

At this juncture, take note of a few troubleshooting details. If your program does not run (i.e. it
crashes), then it is likely you forgot to put the following statement in your AndroidManifest.xml
file:

1 <uses-library android:name="com.google.android.maps" />

If your application manages to load but you cannot see the map (all you see is a grid), then it is
very likely you do not have a valid Map key, or that you did not specify the INTERNET permission:

1 <uses-permission android:name="android.permission.INTERNET" />

Displaying the Zoom View


The previous section showed how you can display the Google Maps in your Android device. You can
drag the map to any desired location and it will be updated on the fly. However, observe that there
is no way to zoom in or out from a particular location. Thus, in this section, you will learn how you
can let users zoom into or out of the map.

First, add a <LinearLayout> element to the main.xml file as shown below:

http://www.android10.org/index.php/articleslocationmaps/253-how-to-use-google-maps-i... 12/16/2010
How to use Google Maps in Android - android10 Page 6 of 22

1 <?xml version="1.0" encoding="utf-8"?>


2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="fill_parent"
4 android:layout_height="fill_parent">
5
6 <com.google.android.maps.MapView
7 android:id="@+id/mapView"
8 android:layout_width="fill_parent"
9 android:layout_height="fill_parent"
10 android:enabled="true"
11 android:clickable="true"
12 android:apiKey="0l4sCTTyRmXTNo7k8DREHvEaLar2UmHGwnhZVHQ"
13 />
14
15 <LinearLayout android:id="@+id/zoom"
16 android:layout_width="wrap_content"
17 android:layout_height="wrap_content"
18 android:layout_alignParentBottom="true"
19 android:layout_centerHorizontal="true"
20 />
21
</RelativeLayout>

You will use the <LinearLayout> element to hold the two zoom controls in Google Maps (you will
see this shortly).

In the MapsActivity.java file, add the following imports:

1 import com.google.android.maps.MapView.LayoutParams;
2 import android.view.View;
3 import android.widget.LinearLayout;

and add the following code after the line setContentView(R.layout.main);

1 mapView = (MapView) findViewById(R.id.mapView);


2 LinearLayout zoomLayout = (LinearLayout)findViewById(R.id.
3 View zoomView = mapView.getZoomControls();
4
5 zoomLayout.addView(zoomView,
6 new LinearLayout.LayoutParams(
7 LayoutParams.WRAP_CONTENT,
8 LayoutParams.WRAP_CONTENT));
true

The complete MapsActivity.java file is given below:

http://www.android10.org/index.php/articleslocationmaps/253-how-to-use-google-maps-i... 12/16/2010
How to use Google Maps in Android - android10 Page 7 of 22

1 package net.learn2develop.GoogleMaps;
2
3 import com.google.android.maps.MapActivity;
4 import com.google.android.maps.MapView;
5 import com.google.android.maps.MapView.LayoutParams;
6
7 import android.os.Bundle;
8 import android.view.View;
9 import android.widget.LinearLayout;
10
11 public class MapsActivity extends MapActivity
12 {
13 MapView mapView;
14
15 /** Called when the activity is first created. */
16 @Override
17 public void onCreate(Bundle savedInstanceState)
18 {
19 super.onCreate(savedInstanceState);
20 setContentView(R.layout.main);
21
22
23 mapView = (MapView) findViewById(R.id.mapView);
24 LinearLayout zoomLayout = (LinearLayout)findViewById(R.id
25 View zoomView = mapView.getZoomControls();
26
27 zoomLayout.addView(zoomView,
28 new LinearLayout.LayoutParams(
29 LayoutParams.WRAP_CONTENT,
30 LayoutParams.WRAP_CONTENT));
31 mapView.displayZoomControls(true);
32
33 }
34
35 @Override
36 protected boolean isRouteDisplayed() {
37 // TODO Auto-generated method stub
38 return false;
39 }

Basically, you obtain the MapView instance on the activity, obtain its zoom controls and
then add it to the LinearLayout element you added to the activity earlier on. In the above
case, the zoom control will be displayed at the bottom of the screen. When you now press F11 in
Eclipse, you will see the zoom controls when you touch the map (see Figure 4).

http://www.android10.org/index.php/articleslocationmaps/253-how-to-use-google-maps-i... 12/16/2010
How to use Google Maps in Android - android10 Page 8 of 22

Figure 4 Using the zoom controls in Google Maps

Using the zoom control, you can zoom in or out of a location by simply touching the "+ or "-"
buttons on the screen.

Alternatively, you can also programmatically zoom in or out of the map using the zoomIn() and
zoomOut() methods from the MapController class:

http://www.android10.org/index.php/articleslocationmaps/253-how-to-use-google-maps-i... 12/16/2010
How to use Google Maps in Android - android10 Page 9 of 22

1 package net.learn2develop.GoogleMaps;
2
3 //...
4 import android.os.Bundle;
5 import android.view.KeyEvent;
6
7 public class MapsActivity extends MapActivity
8 {
9 MapView mapView;
10
11 public boolean onKeyDown(int keyCode, KeyEvent event)
12 {
13 MapController mc = mapView.getController();
14 switch (keyCode)
15 {
16 case KeyEvent.KEYCODE_3:
17 mc.zoomIn();
18 break;
19 case KeyEvent.KEYCODE_1:
20 mc.zoomOut();
21 break;
22 }
23 return super.onKeyDown(keyCode, event);
24 }
25
26 /** Called when the activity is first created. */
27 @Override
28 public void onCreate(Bundle savedInstanceState)
29 {
30 //...
31 }
32
33 @Override
34 protected boolean isRouteDisplayed() {
35 // TODO Auto-generated method stub
36 return false;
37 }
38 }

In the above code, when the user presses the number 3 on the keyboard the map will zoom in into
the next level. Pressing number 1 will zoom out one level.

Changing Views of the Map


By default, the Google Maps displays in the map mode. If you wish to display the map in satellite
view, you can use the setSatellite() method of the MapView class, like this:

1 mapView.setSatellite(true);

You can also display the map in street view, using the setStreetView() method:

1 mapView.setStreetView(true);

http://www.android10.org/index.php/articleslocationmaps/253-how-to-use-google-maps-i... 12/16/2010
How to use Google Maps in Android - android10 Page 10 of 22

Figure 5 shows the Google Maps displayed in satellite and street views, respectively.

Figure 5 Displaying Google Maps in satellite and street views

Displaying a Particular Location


Be default, the Google Maps displays the map of the United States when it is first
loaded. However, you can also set the Google Maps to display a particular location. In this case,
you can use the animateTo() method of the MapController class.

The following code shows how this is done:

http://www.android10.org/index.php/articleslocationmaps/253-how-to-use-google-maps-i... 12/16/2010
How to use Google Maps in Android - android10 Page 11 of 22

1 package net.learn2develop.GoogleMaps;
2
3 import com.google.android.maps.GeoPoint;
4 import com.google.android.maps.MapActivity;
5 import com.google.android.maps.MapController;
6 import com.google.android.maps.MapView;
7 import com.google.android.maps.MapView.LayoutParams;
8
9 import android.os.Bundle;
10 import android.view.View;
11 import android.widget.LinearLayout;
12
13 public class MapsActivity extends MapActivity
14 {
15 MapView mapView;
16 MapController mc;
17 GeoPoint p;
18
19 /** Called when the activity is first created. */
20 @Override
21 public void onCreate(Bundle savedInstanceState)
22 {
23 super.onCreate(savedInstanceState);
24 setContentView(R.layout.main);
25
26 mapView = (MapView) findViewById(R.id.mapView);
27 LinearLayout zoomLayout = (LinearLayout)findViewById(R.id
28 View zoomView = mapView.getZoomControls();
29
30 zoomLayout.addView(zoomView,
31 new LinearLayout.LayoutParams(
32 LayoutParams.WRAP_CONTENT,
33 LayoutParams.WRAP_CONTENT));
34 mapView.displayZoomControls(true);
35
36 mc = mapView.getController();
37 String coordinates[] = {"1.352566007", "103.78921587"};
38 double lat = Double.parseDouble(coordinates[0]);
39 double lng = Double.parseDouble(coordinates[1]);
40
41 p = new GeoPoint(
42 (int) (lat * 1E6),
43 (int) (lng * 1E6));
44
45 mc.animateTo(p);
46 mc.setZoom(17);
47 mapView.invalidate();
48 }
49
50 @Override
51 protected boolean isRouteDisplayed() {
52 // TODO Auto-generated method stub
53 return false;
54 }

http://www.android10.org/index.php/articleslocationmaps/253-how-to-use-google-maps-i... 12/16/2010
How to use Google Maps in Android - android10 Page 12 of 22

In the above code, you first obtain a controller from the MapView instance and assign it to a
MapController object (mc). You use a GeoPoint object to represent a geographical location. Note
that for this class the latitude and longitude of a location are represented in micro degrees. This
means that they are stored as integer values. For a latitude value of 40.747778, you need to
multiply it by 1e6 to obtain 40747778.

To navigate the map to a particular location, you can use the animateTo() method of the
MapController class (an instance which is obtained from the MapView object). The setZoom()
method allows you to specify the zoom level in which the map is displayed. Figure 6 shows the
Google Maps displaying the map of Singapore.

Figure 6 Navigating to a particular location on the map

Adding Markers
Very often, you may wish to add markers to the map to indicate places of interests. Let's
see how you can do this in Android. First, create a GIF image containing a pushpin (see Figure 7)
and copy it into the res/drawable folder of the project. For best effect, you should make the
background of the image transparent so that it does not block off parts of the map when the image
is added to the map.

http://www.android10.org/index.php/articleslocationmaps/253-how-to-use-google-maps-i... 12/16/2010
How to use Google Maps in Android - android10 Page 13 of 22

Figure 7 Adding an image to the res/drawable folder

To add a marker to the map, you first need to define a class that extends the Overlay class:

http://www.android10.org/index.php/articleslocationmaps/253-how-to-use-google-maps-i... 12/16/2010
How to use Google Maps in Android - android10 Page 14 of 22

1 package net.learn2develop.GoogleMaps;
2
3 import java.util.List;
4
5 import com.google.android.maps.GeoPoint;
6 import com.google.android.maps.MapActivity;
7 import com.google.android.maps.MapController;
8 import com.google.android.maps.MapView;
9 import com.google.android.maps.Overlay;
10 import com.google.android.maps.MapView.LayoutParams;
11
12 import android.graphics.Bitmap;
13 import android.graphics.BitmapFactory;
14 import android.graphics.Canvas;
15 import android.graphics.Point;
16 import android.os.Bundle;
17 import android.view.View;
18 import android.widget.LinearLayout;
19
20 public class MapsActivity extends MapActivity
21 {
22 MapView mapView;
23 MapController mc;
24 GeoPoint p;
25
26 class MapOverlay extends com.google.android.maps.Overlay
27 {
28 @Override
29 public boolean draw(Canvas canvas, MapView mapView,
30 boolean shadow, long when)
31 {
32 super.draw(canvas, mapView, shadow);
33
34 //---translate the GeoPoint to screen pixels---
35 Point screenPts = new Point();
36 mapView.getProjection().toPixels(p, screenPts);
37
38 //---add the marker---
39 Bitmap bmp = BitmapFactory.decodeResource(
40 getResources(), R.drawable.pushpin);
41 canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null
42 return true;
43 }
44 }
45
46 /** Called when the activity is first created. */
47 @Override
48 public void onCreate(Bundle savedInstanceState)
49 {
50 //...
51 }
52
53 @Override
54 protected boolean isRouteDisplayed() {
55 // TODO Auto-generated method stub
56 return false;

http://www.android10.org/index.php/articleslocationmaps/253-how-to-use-google-maps-i... 12/16/2010
How to use Google Maps in Android - android10 Page 15 of 22

In the MapOverlay class that you have defined, override the draw() method so that you
can draw the pushpin image on the map. In particular, note that you need to translate the
geographical location (represented by a GeoPoint object, p) into screen coordinates.

As you want the pointed tip of the push pin to indicate the position of the location, you would need
to deduct the height of the image (which is 50 pixels) from the y-coordinate of the point (see
Figure 8) and draw the image at that location.

Figure 8 Adding an image to the map

To add the marker, create an instance of the MapOverlap class and add it to the list of overlays
available on the MapView object:

1 @Override
2 public void onCreate(Bundle savedInstanceState)
3 {
4 super.onCreate(savedInstanceState);
5 setContentView(R.layout.main);
6
7 //...
8
9 mc.animateTo(p);
10 mc.setZoom(17);
11
12 //---Add a location marker---
13 MapOverlay mapOverlay = new MapOverlay();
14 List<Overlay> listOfOverlays = mapView.getOverlays();
15 listOfOverlays.clear();
16 listOfOverlays.add(mapOverlay);
17
18 mapView.invalidate();
19 }

Figure 9 shows how the pushpin looks like when added to the map.

http://www.android10.org/index.php/articleslocationmaps/253-how-to-use-google-maps-i... 12/16/2010
How to use Google Maps in Android - android10 Page 16 of 22

Figure 9 Adding a marker to the map

Getting the Location that was touched


After using Google Maps for a while, you may wish to know the latitude and longitude
of a location corresponding to the position on the screen that you have just touched.
Knowing this information is very useful as you can find out the address of a location, a process
known as Geocoding (you will see how this is done in the next section).

If you have added an overlay to the map, you can override the onTouchEvent() method within
the Overlay class. This method is fired every time the user touches the map. This method has
two parameters - MotionEvent and MapView. Using the MotionEvent parameter, you can
know if the user has lifted his finger from the screen using the getAction() method. In the
following code, if the user has touched and then lifted his finger, you will display the latitude and
longitude of the location touched:

http://www.android10.org/index.php/articleslocationmaps/253-how-to-use-google-maps-i... 12/16/2010
How to use Google Maps in Android - android10 Page 17 of 22

1 class MapOverlay extends com.google.android.maps.Overlay


2 {
3 @Override
4 public boolean draw(Canvas canvas, MapView mapView,
5 boolean shadow, long when)
6 {
7 //...
8 }
9
10 @Override
11 public boolean onTouchEvent(MotionEvent event, MapView mapView
12 {
13 //---when user lifts his finger---
14 if (event.getAction() == 1) {
15 GeoPoint p = mapView.getProjection().fromPixels(
16 (int) event.getX(),
17 (int) event.getY());
18 Toast.makeText(getBaseContext(),
19 p.getLatitudeE6() / 1E6 + "," +
20 p.getLongitudeE6() /1E6 ,
21 Toast.LENGTH_SHORT).show();
22 }
23 return false;
24 }

Figure 10 shows this in action.

http://www.android10.org/index.php/articleslocationmaps/253-how-to-use-google-maps-i... 12/16/2010
How to use Google Maps in Android - android10 Page 18 of 22

Figure 10 Displaying the latitude and longitude of a point touched on the map

Geocoding and Reverse Geocoding


If you know the latitude and longitude of a location, you can find out its address using a
process known as Geocoding. Google Maps in Android supports this via the Geocoder class. The
following code shows how you can find out the address of a location you have just touched using
the getFromLocation() method:

http://www.android10.org/index.php/articleslocationmaps/253-how-to-use-google-maps-i... 12/16/2010
How to use Google Maps in Android - android10 Page 19 of 22

1 class MapOverlay extends com.google.android.maps.Overlay


2 {
3 @Override
4 public boolean draw(Canvas canvas, MapView mapView,
5 boolean shadow, long when)
6 {
7 //...
8 }
9
10 @Override
11 public boolean onTouchEvent(MotionEvent event, MapView mapView
12 {
13 //---when user lifts his finger---
14 if (event.getAction() == 1) {
15 GeoPoint p = mapView.getProjection().fromPixels(
16 (int) event.getX(),
17 (int) event.getY());
18
19 Geocoder geoCoder = new Geocoder(
20 getBaseContext(), Locale.getDefault());
21 try {
22 List<Address> addresses = geoCoder.getFromLocation
23 p.getLatitudeE6() / 1E6,
24 p.getLongitudeE6() / 1E6, 1);
25
26 String add = "";
27 if (addresses.size() > 0)
28 {
29 for (int i=0; i<addresses.get(0).getMaxAddressLineIndex
30 i++)
31 add += addresses.get(0).getAddressLine
32 }
33
34 Toast.makeText(getBaseContext(), add, Toast.LENGTH_SHORT
35 }
36 catch (IOException e) {
37 e.printStackTrace();
38 }
39 return true;
40 }
41 else
42 return false;
43 }

Figure 11 shows the above code in action.

http://www.android10.org/index.php/articleslocationmaps/253-how-to-use-google-maps-i... 12/16/2010
How to use Google Maps in Android - android10 Page 20 of 22

Figure 11 Performing Geocoding in Google Maps

If you know the address of a location but want to know its latitude and longitude, you
can do so via reverse-Geocoding. Again, you can use the Geocoder class for this purpose. The
following code shows how you can find the exact location of the Empire State Building by using the
getFromLocationName() method:

1 Geocoder geoCoder = new Geocoder(this, Locale.getDefault());


2 try {
3 List<Address> addresses = geoCoder.getFromLocationName
4 "empire state building", 5);
5 String add = "";
6 if (addresses.size() > 0) {
7 p = new GeoPoint(
8 (int) (addresses.get(0).getLatitude() * 1E6
9 (int) (addresses.get(0).getLongitude() * 1E6
10 mc.animateTo(p);
11 mapView.invalidate();
12 }
13 } catch (IOException e) {
14 e.printStackTrace();

Once the location is found, the above code navigates the map to the location. Figure 12 shows the
code in action.

http://www.android10.org/index.php/articleslocationmaps/253-how-to-use-google-maps-i... 12/16/2010
How to use Google Maps in Android - android10 Page 21 of 22

Figure 12 Navigating to the Empire State Building

Summary
In this article, you have learnt a few tricks for the Google Maps in Android. Using Google
Maps, there are many interesting projects you can work on, such as geo-tagging, geo-tracking, etc.
If you have cool ideas on building cool location-based services, share with us in the comments box
below. Have fun!

Thanks mobiforge for this article!!!

Comments (0) Search

Only registered users can write comments!

RELATED ANDROID10 --- TIP!!!


ARTICLES
You can edit your position easily: just click on your picture when you're logged in,
Android Location then on the top you will find a menu, go there, edit your profile, go to your position
Providers - gps, tab and drag the icon in the map. That's all. Just easy!!!

http://www.android10.org/index.php/articleslocationmaps/253-how-to-use-google-maps-i... 12/16/2010
How to use Google Maps in Android - android10 Page 22 of 22

network, passive
Obtaining User
Location
Google Earth for
Android Lets You
Deep Sea Dive

Copyright © 2010 android10. All Rights Reserved. Android is a trademark of Google Inc.
PenanoTeam. Free Software released under the GNU/GPL License.

http://www.android10.org/index.php/articleslocationmaps/253-how-to-use-google-maps-i... 12/16/2010

Potrebbero piacerti anche