Xamarin.Forms
Работа с картами
Поиск…
замечания
Если вы собираетесь запустить свой проект на другом компьютере, вам нужно будет создать для него новый ключ API, поскольку отпечатки пальцев SHA-1 не будут совпадать для разных машин сборки.
Вы можете изучить проект, описанный в примере Добавление карты в Xamarin.Forms здесь
Добавление карты в Xamarin.Forms (Xamarin Studio)
Вы можете просто использовать собственные API карт на каждой платформе с помощью Xamarin Forms. Все, что вам нужно, это загрузить пакет Xamarin.Forms.Maps из nuget и установить его в каждый проект (включая проект PCL).
Инициализация карт
Прежде всего, вы должны добавить этот код в свои проекты на платформе. Для этого вам нужно добавить Xamarin.FormsMaps.Init
метода Xamarin.FormsMaps.Init
, как в приведенных ниже примерах.
проект iOS
Файл 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);
}
}
Android-проект
Файл 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());
}
}
Конфигурация платформы
Дополнительные шаги настройки требуются на некоторых платформах перед отображением карты.
проект iOS
В проекте iOS вам просто нужно добавить 2 файла в файл Info.plist :
-
NSLocationWhenInUseUsageDescription
string со значениемWe are using your location
-
NSLocationAlwaysUsageDescription
string со значениемCan we use your location
Android-проект
Чтобы использовать Карты Google, вы должны создать ключ API и добавить его в свой проект. Следуйте приведенной ниже инструкции, чтобы получить этот ключ:
(Необязательно) Найдите, где находится инструмент инструмента keytool (по умолчанию это
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands
)(Необязательно) Откройте терминал и перейдите в папку вашего ключа:
cd /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands
Выполните следующую команду keytool:
keytool -list -v -keystore "/Users/[USERNAME]/.local/share/Xamarin/Mono for Android/debug.keystore" -alias androiddebugkey -storepass android -keypass android
Где [USERNAME], очевидно, ваша текущая папка пользователя. Вы должны получить что-то подобное в выводе:
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
Все, что нам нужно в этом выпуске, - это отпечаток сертификата SHA1. В нашем случае это равно:
57:A1:E5:23:CE:49:2F:17:8D:8A:EA:87:65:44:C1:DD:1C:DA:51:95
Скопируйте или сохраните где-нибудь этот ключ. Это нам понадобится позже.
Перейдите в Google Developers Console , в нашем случае мы должны добавить API Android для Google Maps , поэтому выберите:
Google попросит вас создать проект для включения API, следовать этому совету и создать проект:
Включите API Карт Google для своего проекта: После того, как вы включили api, вам нужно создать учетные данные для своего приложения. Следуйте этому совету:
На следующей странице выберите платформу Android, нажмите «Какие мандаты мне нужны?». , введите имя для вашего ключа API, нажмите «Добавить имя пакета и отпечаток пальца», введите имя своего пакета и ваш отпечаток SHA1 с шага 4 и, наконец, создайте ключ API: Чтобы найти название своего пакета в Xamarin Studio, перейдите в свое решение .Droid -> AndroidManifest.xml:
После создания скопируйте новый ключ API (не забудьте нажать кнопку «Готово» после) и вставьте его в файл
AndroidManifest.xml
: Файл 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>
Вам также необходимо включить некоторые разрешения в манифесте, чтобы включить некоторые дополнительные функции:
- Доступ к грубому местоположению
- Доступ к Fine Location
- Доступ к дополнительным командам
- Доступ к локальному местоположению
- Состояние сети доступа
- Доступ к Wi-Fi
- интернет
Хотя для загрузки данных Карты требуется два последних разрешения. Узнайте о разрешениях на Android, чтобы узнать больше. Это все шаги для настройки Android.
Примечание . Если вы хотите запустить приложение на симуляторе Android, вам необходимо установить на него сервисы Google Play. Следуйте этому руководству, чтобы установить Play Services на Xamarin Android Player. Если вы не можете найти обновление сервисов Google Play после установки магазина воспроизведения, вы можете обновить его непосредственно из своего приложения, где у вас есть зависимость от служб карт
Добавление карты
Добавление вида карты в ваш кроссплатформенный проект довольно прост. Вот пример того, как вы можете это сделать (я использую проект PCL без XAML).
Проект PCL
Файл MapExample.cs
public class App : Application
{
public App()
{
var map = new Map();
map.IsShowingUser = true;
var rootPage = new ContentPage();
rootPage.Content = map;
MainPage = rootPage;
}
}
Это все. Теперь, если вы запустите приложение на iOS или Android, оно покажет вам вид карты: