Xamarin.Forms
Trabajando con Mapas
Buscar..
Observaciones
Si va a ejecutar su proyecto en otra computadora, tendrá que generar una nueva clave API para él, porque las huellas dactilares SHA-1 no coincidirán con las diferentes máquinas de compilación.
Puede explorar el proyecto, que se describe en el ejemplo Agregar un mapa en Xamarin.Forms aquí
Añadiendo un mapa en Xamarin.Forms (Xamarin Studio)
Simplemente puede usar las API de mapas nativos en cada plataforma con Xamarin Forms. Todo lo que necesita es descargar el paquete Xamarin.Forms.Maps de nuget e instalarlo en cada proyecto (incluido el proyecto PCL).
Inicialización de mapas
En primer lugar, debe agregar este código a sus proyectos específicos de la plataforma. Para hacer esto, debe agregar la Xamarin.FormsMaps.Init
método Xamarin.FormsMaps.Init
, como en los ejemplos a continuación.
proyecto iOS
Archivo AppDelegate.cs
[Register("AppDelegate")]
public partial class AppDelegate : Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
Xamarin.Forms.Forms.Init();
Xamarin.FormsMaps.Init();
LoadApplication(new App());
return base.FinishedLaunching(app, options);
}
}
Proyecto de android
Archivo MainActivity.cs
[Activity(Label = "MapExample.Droid", Icon = "@drawable/icon", Theme = "@style/MyTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle bundle)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(bundle);
Xamarin.Forms.Forms.Init(this, bundle);
Xamarin.FormsMaps.Init(this, bundle);
LoadApplication(new App());
}
}
Configuración de la plataforma
Se requieren pasos de configuración adicionales en algunas plataformas antes de que se muestre el mapa.
proyecto iOS
En el proyecto iOS, solo tiene que agregar 2 entradas a su archivo Info.plist :
-
NSLocationWhenInUseUsageDescription
cadena con valorWe are using your location
-
NSLocationAlwaysUsageDescription
cadena con valorCan we use your location
Proyecto de android
Para usar Google Maps, debe generar una clave API y agregarla a su proyecto. Siga las instrucciones a continuación para obtener esta clave:
(Opcional) Encuentre la ubicación de la herramienta keytool (la
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands
predeterminada es/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands
)(Opcional) Abra el terminal y vaya a la ubicación de su herramienta de claves:
cd /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands
Ejecute el siguiente comando keytool:
keytool -list -v -keystore "/Users/[USERNAME]/.local/share/Xamarin/Mono for Android/debug.keystore" -alias androiddebugkey -storepass android -keypass android
Donde [NOMBRE DE USUARIO] es, obviamente, su carpeta de usuario actual. Debería obtener algo similar a esto en la salida:
Alias name: androiddebugkey Creation date: Jun 30, 2016 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: 4b5ac934 Valid from: Thu Jun 30 10:22:00 EEST 2016 until: Sat Jun 23 10:22:00 EEST 2046 Certificate fingerprints: MD5: 4E:49:A7:14:99:D6:AB:9F:AA:C7:07:E2:6A:1A:1D:CA SHA1: 57:A1:E5:23:CE:49:2F:17:8D:8A:EA:87:65:44:C1:DD:1C:DA:51:95 SHA256: 70:E1:F3:5B:95:69:36:4A:82:A9:62:F3:67:B6:73:A4:DD:92:95:51:44:E3:4C:3D:9E:ED:99:03:09:9F:90:3F Signature algorithm name: SHA256withRSA Version: 3
Todo lo que necesitamos en esta salida es la huella digital del certificado SHA1. En nuestro caso es igual a esto:
57:A1:E5:23:CE:49:2F:17:8D:8A:EA:87:65:44:C1:DD:1C:DA:51:95
Copia o guarda en alguna parte esta clave. Lo necesitaremos más adelante.
Vaya a la Consola de desarrolladores de Google , en nuestro caso debemos agregar la API de Android de Google Maps , así que elíjala
Google le pedirá que cree un proyecto para habilitar las API, siga este consejo y cree el proyecto:
Habilite la API de Google Maps para su proyecto: Después de habilitar la API, debe crear credenciales para su aplicación. Siga este consejo:
En la página siguiente, elija la plataforma Android, toque "¿Qué credenciales necesito?" botón, cree un nombre para su clave API, toque "Agregar nombre de paquete y huella digital", ingrese su nombre de paquete y su huella digital SHA1 en el paso 4 y finalmente cree una clave API: Para encontrar el nombre de su paquete en Xamarin Studio, vaya a su solución .Droid -> AndroidManifest.xml:
Después de la creación, copie la nueva clave API (no olvide presionar el botón "Listo" después) y péguela en su archivo
AndroidManifest.xml
: Archivo AndroidManifest.xml<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="documentation.mapexample"> <uses-sdk android:minSdkVersion="15" /> <application android:label="MapExample"> <meta-data android:name="com.google.android.geo.API_KEY" android:value="AIzaSyBAg8X-t4pOIDDp3q5Ph45jKUIVjo_RnxU" /> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> </application> </manifest>
También necesitarás habilitar algunos permisos en tu manifiesto para habilitar algunas características adicionales:
- Acceso a la ubicación aproximada
- Acceso a Ubicación Fina
- Ubicación de acceso Comandos adicionales
- Acceso a la ubicación simulada
- Estado de la red de acceso
- Acceso Wifi Estado
- Internet
Aunque, los dos últimos permisos son necesarios para descargar datos de Maps. Lea acerca de los permisos de Android para aprender más. Eso es todos los pasos para la configuración de Android.
Nota : si desea ejecutar su aplicación en el simulador de Android, debe instalar los servicios de Google Play. Siga este tutorial para instalar Play Services en el reproductor de Android Xamarin. Si no puede encontrar la actualización de Google Play Services después de la instalación de Play Store, puede actualizarla directamente desde su aplicación, donde depende de los servicios de mapas.
Añadiendo un mapa
Agregar una vista de mapa a su proyecto multiplataforma es bastante simple. Aquí hay un ejemplo de cómo puede hacerlo (estoy usando el proyecto PCL sin XAML).
Proyecto PCL
Archivo MapExample.cs
public class App : Application
{
public App()
{
var map = new Map();
map.IsShowingUser = true;
var rootPage = new ContentPage();
rootPage.Content = map;
MainPage = rootPage;
}
}
Eso es todo. Ahora, si ejecuta su aplicación en iOS o Android, le mostrará la vista del mapa: