Android Tutorial (old) Google Maps Android v2 tutorial

Status
Not open for further replies.
If you are using B4A v5.80+ then please follow this tutorial: https://www.b4x.com/android/forum/threads/google-maps.63930/#post-404386

GoogleMaps library requires v2.50 or above.

GoogleMaps library allows you to add Google maps to your application. This library requires Android 3+ and will only work on devices with Google Play service.

This tutorial will cover the configuration steps required for showing a map.

1. Download Google Play services - From the IDE choose Run AVD Manager and then choose Tools - SDK Manager. Select Google Play services under the Extras node and install it:

SS-2012-12-18_18.28.04.png


2. Copy google-play-services.jar to the libraries folder - This file is available under:
C:\<android sdk>\extras\google\google_play_services\libproject\google-play-services_lib\libs (ignore the extra space that the forum script insists on adding)
You should copy it to the libraries folder.

2.5. Download the attached library, unzip it and copy to the libraries folder.

3. Find the key signature - Your application must be signed with a private key other than the debug key. After you select a new or existing key file (Tools - Private Sign Key) you should reopen the private key dialog. The signature information will be displayed (increase the dialog size as needed).
The value after SHA1 is required for the next step:

SS-2012-12-18_18.11.34.png


4. Create an API project - Follow these steps and create an API project.
You should follow the steps under "Creating an API Project" and "Obtaining an API key".

Tips:
- Make sure to select "Google Maps Android API v2" in the services list and not one of the other similar services.
- Under "Simple API Access" you should select "Key for Android apps (with certificates".

5. Add the following code to the manifest editor:
B4X:
AddManifestText( <permission
          android:name="$PACKAGE$.permission.MAPS_RECEIVE"
          android:protectionLevel="signature"/>
      <uses-feature android:glEsVersion="0x00020000" android:required="true"/>)

AddApplicationText(<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="AIzaSyCzspmxxxxxxxxxxxxx"/>
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"
    />)
AddPermission(android.permission.ACCESS_NETWORK_STATE)
You should replace the value after android:value with the key you received in the previous step.

6. Add an #AdditionalRes attribute to the main activity:

You should add a reference to Google play resources by adding the following line:
B4X:
#AdditionalRes: <google-play-services res folder>, com.google.android.gms
For example:

#AdditionalRes: C:\android-sdk-windows\extras\google\google_play_services\libproject\google-play-services_lib\res, com.google.android.gms

Run the following code:
B4X:
'Activity module
Sub Process_Globals

End Sub

Sub Globals
   Dim mFragment As MapFragment
   Dim gmap As GoogleMap
   Dim MapPanel As Panel
End Sub

Sub Activity_Create(FirstTime As Boolean)
   MapPanel.Initialize("")
   Activity.AddView(MapPanel, 0, 0, 100%x, 100%y)
   If mFragment.IsGooglePlayServicesAvailable = False Then
      ToastMessageShow("Google Play services not available.", True)
   Else
      mFragment.Initialize("Map", MapPanel)
   End If
End Sub
Sub Map_Ready
   Log("map ready")
   gmap = mFragment.GetMap
   If gmap.IsInitialized = False Then
      ToastMessageShow("Error initializing map.", True)
   Else
      gmap.AddMarker(36, 15, "Hello!!!")
      Dim cp As CameraPosition
      cp.Initialize(36, 15, gmap.CameraPosition.Zoom)
      gmap.AnimateCamera(cp)
   End If
End Sub

You should see:

SS-2012-12-18_18.25.14.png


If you see a "white map" then there is most probably a mismatch between the: package name, sign key and the API key (from the manifest editor).

Google documentation: https://developers.google.com/maps/documentation/android/intro
Note that there is a required attribution which you must include in your app (see above link). You can get the string by calling MapFragment.GetOpenSourceSoftwareLicenseInfo.

V1.01: Fixes a bug in AddMarker2.
 

Attachments

  • GoogleMaps.zip
    17.8 KB · Views: 11,592
Last edited:

Nerdworld

Member
Licensed User
Longtime User
In your first post you've written about an alternative google play library and uploaded an older jar file.
I tried this one and it works very well!
 

AmdSupreme1

New Member
Licensed User
Longtime User
Hi all,

Im sorry if this is a silly question or if the answer seems obvious (I am new to all of this) but I have been looking through the thread and havent found an answer.

I am trying to create a route between the current location and an address I provide. I try and make a polyline using GoogleMap.MyLocation and the LatLng of the address but it gives me the error that GoogleMap.MyLocation is uninitialized.

My questions are
1) How exactly is one supposed to use GoogleMap.MyLocation? I have enabled it so I can see my current location as a marker on the map but I am wondering why I cannot use it in my polyline.

2) If I want to use google maps to create routes with directions in my application, what libraries would I use? Is there an example code I could look at implementing these libraries?

Thank you for the help
 

GMan

Well-Known Member
Licensed User
Longtime User
1) How exactly is one supposed to use GoogleMap.MyLocation? I have enabled it so I can see my current location as a marker on the map but I am wondering why I cannot use it in my polyline.
AFAIK about 15 meters (in DE)
2) If I want to use google maps to create routes with directions in my application, what libraries would I use? Is there an example code I could look at implementing these libraries?

http://www.b4x.com/android/forum/threads/google-maps-android-v2-tutorial.24415/ :cool:
 

arjian

Member
Licensed User
Longtime User
invalid resource directory name
i am getting this error message(attached) when i run the code
 

Attachments

  • error.png
    error.png
    392.2 KB · Views: 321

arjian

Member
Licensed User
Longtime User
not solved,i got a new error(attached)
 

Attachments

  • SDK Manager.png
    SDK Manager.png
    78.7 KB · Views: 270
  • Compile-Error.txt
    15.4 KB · Views: 292

GMan

Well-Known Member
Licensed User
Longtime User
May it depend on the different Versions in your SDK ?
SDK Tools 22.3
SDK Plattform-Tools 20
SDK Built-Tools 19.1
Google Play Services 15
 

Attachments

  • ASDK.jpg
    ASDK.jpg
    154.3 KB · Views: 244

arjian

Member
Licensed User
Longtime User
the project is attached (unnecessary parts have been deleted).
about the SDK versions which ones do you recommend?
by the way my other projects work fine.
 

Attachments

  • arjian-gis-test.zip
    175.7 KB · Views: 341

arjian

Member
Licensed User
Longtime User
one step forward but there is a problem, i got a new error message(attached):confused:
and when i tried to install package on a real device (LG G2) i got this message "there was a problem parsing the package"
there's a question: what if i need GoogleMapsExtera?
 

Attachments

  • error.png
    error.png
    24 KB · Views: 294

GMan

Well-Known Member
Licensed User
Longtime User
as it seems you have error in the manifest
 

arjian

Member
Licensed User
Longtime User
as it seems you have error in the manifest

there's no error in manifest because the new project with the same manifest works fine,i think there's a problem with the libs that i used in project, i don't know maybe they have conflict
 
Status
Not open for further replies.
Top