Я установил следующий nuget:
У меня следующий класс:
public class MainApplication : Application
{
public MainApplication(IntPtr handle, JniHandleOwnershiptranser): base(handle, transer)
{
}
public override void OnCreate()
{
base.OnCreate();
CrossCurrentActivity.Current.Init(this);
}
}
У меня есть код в моем классе MainActivity:
protected override void OnCreate(Bundle bundle)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(bundle);
Forms.Init(this, bundle);
FormsMaps.Init(this, bundle);
LoadApplication(new App());
}
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
{
PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
Манифест Android
<application android:label = "MyApp.Android" android:icon = "@drawable/icon">
<meta-data android:name = "com.google.android.maps.v2.API_KEY " android:value = "AIza..." />
<provider android:name = "android.support.v4.content.FileProvider" android:authorities = "${applicationId}.fileprovider" android:exported = "false" android:grantUriPermissions = "true">
<meta-data android:name = "android.support.FILE_PROVIDER_PATHS" android:resource = "@xml/file_paths"></meta-data>
</provider>
</application>
Манифест Android - разрешение
Пробую использовать метаданные android: name = "com.google.android.geo.API_KEY" вместо метаданные android: name = "com.google.android.maps.v2.API_KEY"
Также добавляем эту строку ниже <meta-data android: name = "com.google.android.gms.version" android: value = "@ integer / google_play_services_version" />
У меня есть одно представление, в котором находится моя карта:
<ContentPage.Content>
<maps:Map x:Name = "Map" />
</ContentPage.Content>
И код позади:
private async Task LoadMap()
{
if (await Utils.Utils.CheckPermissions(Permission.Location))
{
var currentLocation = await CrossGeolocator.Current.GetPositionAsync(TimeSpan.FromSeconds(10));
// MORE CODE
}
}
И я использую этот класс https://github.com/jamesmontemagno/PermissionsPlugin/blob/master/samples/PermissionsSample/PermissionsSample/Utils.cs для запроса разрешения
Я получаю ключ api отсюда https://developers.google.com/maps/documentation/android-sdk/signup?hl=en (Maps SDK для Android)
Версия моих Xamarin Forms - 3.1.0.697729.
Я создал еще один пустой проект, и местоположение на Android все еще не работает.
В iOS у меня нет проблем. Место рабочее.
Я читал это, https://jamesmontemagno.github.io/GeolocatorPlugin/GettingStarted.html.
Когда я запускаю приложение, и следующая строка кода пытается выполнить метод, оно больше не выполняет следующие строки метода. Приложение работает, но не пропускает никаких исключений.
await CrossGeolocator.Current.GetPositionAsync(TimeSpan.FromSeconds(10));
Эта строка ничего не возвращает.
Есть идеи, почему это не удается?
@Cheesebaron В моем коде за общедоступным MapLocal () {InitializeComponent (); customMap.CustomPins = новый список <CustomPin> (); MoveMapToCurrentPosition (); }
поместите эту строку кода Plugin.CurrentActivity.CrossCurrentActivity.Current.Init(this, bundle); в свой MainActivity.cs`. любые изменения?
Не могли бы вы подробнее рассказать о вызове LoadMap. Если GetPositionAsync не возвращает, у вас тупик
@Fuong Ничего, тот же результат, если у меня есть CrossCurrentActivity.Current.Init (this, bundle); или нет
Я начал использовать Xamarin.Essentials, потому что многие из этих плагинов Xamarin движутся к нему github.com/xamarin/Essentials. Взгляните на документацию по геолокации и рассмотрите возможность ее использования, потому что, вероятно, она лучше поддерживает docs.microsoft.com/en-gb/xamarin/essentials/geolocation
@Cheesebaron Как я могу это увидеть? (тупик)
@JorgeMHT, если вы читаете раздел Разрешения и дополнительные соображения по настройке в [GeolocatoPlugin] (jamesmontemagno.github.io/GeolocatorPlugin/GettingStarted.ht ml), у вас должна быть хотя бы эта строка кода в вашем MainActivity.cs для Android.
@Fuong У меня есть этот метод OnRequestPermissionsResult в моем MainActivity
@ J.Aguilar На данный момент я могу добавить эти плагины в свой проект





Как вы звоните
LoadMap?