Spanish [SOLUCIONADO] No se muestra el mapa de Google Maps

tomky

Active Member
Licensed User
Hola.
Estamos intentando utilizar Google Maps, pero no nos muestra el mapa, aunque sí el logo de Google, el botón de localización y los del zoom.

Hemos seguido los pasos de https://www.b4x.com/android/forum/threads/google-maps.63930/#content:

- Descargar Google Play Services
- Copiar la librería a la carpeta AddLibraries del programa B4a. v6.50.
- Poner en el AndroidManifest como versión mínima (minSdkVersion) 16. (14+)
- Crear un proyecto en https://console.developers.google.com.
- Habilitar Google Maps Android API.
- Crear las credenciales: una API Key y una SHA1.
- Integrar el proyecto con Firebase y descargar el archivo google-services.json, y copiarlo en la carpeta raiz del proyecto.
- Añadir la línea #AdditionalJar: com.google.android.gms:play-services-maps.
- Añadir en el manifest:

B4X:
'************ Google Play Services Base ************
AddApplicationText(
   <activity android:name="com.google.android.gms.common.api.GoogleApiActivity"
  android:theme="@android:style/Theme.Translucent.NoTitleBar"
  android:exported="false"/>
    <meta-data
  android:name="com.google.android.gms.version"
  android:value="@integer/google_play_services_version" />
)
'************ Google Play Services Base (end) ************

AddApplicationText(
<meta-data
  android:name="com.google.android.geo.API_KEY"
  android:value="Axxxx"/>   'Nuestra API Key
)
- Crear y enlazar el MapFragment del diseñador.
- Añadir al código:
B4X:
Sub Activity_Create(FirstTime As Boolean)
   Activity.LoadLayout("1")
   If MapFragment1.IsGooglePlayServicesAvailable = False Then
     ToastMessageShow("Please install Google Play Services.", True)
   End If
End Sub

Sub MapFragment1_Ready
   gmap = MapFragment1.GetMap
   Dim m1 As Marker = gmap.AddMarker(10, 30, "test")
   m1.Snippet = "This is the snippet"
End Sub

¿Alguna idea?
 

tomky

Active Member
Licensed User
¡Muchas gracias rscheel !

Siguiendo tu tutorial hemos conseguido que funcione.

Nos faltaba crear una Private Sign Key dentro de B4A, tal como tu explicas. E importante: copiar el SHA-1 de esta API KEY creada en B4a, y ponerla en el SHA-1 de la API KEY para Android creada en https://console.developers.google.com, para que coincidan.

Además, nos faltaba poner las líneas:
B4X:
    Dim JavaMapsObject As JavaObject
    JavaMapsObject = gmap.GetUiSettings
    JavaMapsObject.RunMethod("setMapToolbarEnabled", Array As Object(True))
y enlazarlo con la librería GPS.


Pero hemos realizado unas modificaciones en tu código, al aplicarlo, pues nos mandaba al mar:
hemos suprimido la parte de la CameraPosition (el primer cp.Initialize).

Pero no sabemos ahora como hacer para aumentar automáticamente el zoom para que se vea más de cerca.
En cambio con la versión que hemos realizado con la librería FusedLocationProvider sí lo conseguimos, al poder dejar la parte de la CameraPosition (el primer cp.Initialize).

Para finalizar esta respuesta, es una lástima que tu tutorial no sea más visible al realizar una búsqueda.

Saludos.
 
Last edited:

mvera

Active Member
Licensed User
Longtime User
hola te recomiendo que la libreria locationManager , en mi caso redujo los tiempos para saber tu ubicación , mas aun si estas en lugares cubiertos.
 

tomky

Active Member
Licensed User
Gracias mvera, pero para lugares cubiertos creo que va mejor la librería FusedLocationProvider, no?
 

tomky

Active Member
Licensed User
Ya vemos que para mapas estáticos y no los dinámicos como el anterior, hay que utilizar una vista webview y la instrucción
B4X:
    WebView1.LoadUrl("http://maps.googleapis.com/maps/api/staticmap?center=NumLat,NumLon&zoom=16&size=" & ancho & "x100&maptype=roadmap&markers=color:blue%7Clabel:S%7CNumLat,NumLon&key=TuAPIKey&sensor=false")

Y habilitar la API de mapas estáticos en https://console.developers.google.com.
 
Top