Используйте формы Maps и Geo-location - PullRequest
0 голосов
/ 06 ноября 2019

При использовании Xamarin.Forms.Maps с Xamarin.Essentials я получаю следующую ошибку:

Ошибка CS0104 «Карта» - это неоднозначная ссылка между «Xamarin.Essentials.Map» и «Xamarin». Forms.Maps.Map '

Я хочу иметь возможность использовать карту и просматривать информацию о местоположении, когда пользователь щелкает их местоположение.

Моим решением было создать класс, который извлекает информацию о местоположении. Страница, на которой есть карта, имеет этот код.

    public static double LatValue { set; get; } //Pass this to GeoLoc
    public static double LongValue { set; get; } //Pass this to GeoLoc
    public Page2()
    {
        InitializeComponent();
        var map = new Map(
        MapSpan.FromCenterAndRadius(new Position(22.4, -90.5), Distance.FromMiles(0.3)))
        {
            IsShowingUser = true,
        };
        map.MapClicked += Map_MapClicked;
        var stack = new StackLayout { Spacing = 0 };
        stack.Children.Add(map);
        Content = stack;
    }

    private void Map_MapClicked(object sender, MapClickedEventArgs e)
    {
        LatValue = e.Position.Latitude;
        LongValue = e.Position.Longitude;
        Console.WriteLine($"MapClick: {e.Position.Latitude}, {e.Position.Longitude}");
    }

Геолокация имеет этот класс:

public async void GetGeosLoc()
    {
        try
        {
            var placemarks = await Geocoding.GetPlacemarksAsync(Page2.LatValue, Page2.LongValue);

            var placemark = placemarks?.FirstOrDefault();
            if (placemark != null)
            {
                var geocodeAddress =
                    $"AdminArea:       {placemark.AdminArea}\n" +
                    $"CountryCode:     {placemark.CountryCode}\n" +
                    $"CountryName:     {placemark.CountryName}\n" +
                    $"FeatureName:     {placemark.FeatureName}\n" +
                    $"Locality:        {placemark.Locality}\n" +
                    $"PostalCode:      {placemark.PostalCode}\n" +
                    $"SubAdminArea:    {placemark.SubAdminArea}\n" +
                    $"SubLocality:     {placemark.SubLocality}\n" +
                    $"SubThoroughfare: {placemark.SubThoroughfare}\n" +
                    $"Thoroughfare:    {placemark.Thoroughfare}\n";

                Console.WriteLine(geocodeAddress);
            }
        }
        catch (FeatureNotSupportedException fnsEx)
        {
            // Feature not supported on device
        }
        catch (Exception ex)
        {
            // Handle exception that may have occurred in geocoding
        }
    }

Есть ли лучший способ использования карт форм с основами?

1 Ответ

1 голос
/ 06 ноября 2019

Прежде всего, пожалуйста, убедитесь, что вы используете правильные пакеты nuget

Xamarin.Forms.Maps и Xamarin.Essentials

Я видел, что ваше сообщение об ошибке связано с Xamarin.Forms.Maps.Map не Xamarin.Forms.Maps`, пожалуйста, откройте менеджер пакетов NuGet, проверьте название этих пакетов nuget. enter image description here

Я тестирую его в своем эмуляторе, я могу использовать эти пакеты nuget (Xamarin.Forms.Maps и Xamarin.Essentials) одновременно.

ЗдесьСкриншот моего бега.

enter image description here

В своем коде я использую Xamarin.Essentials для получения информации о местоположении, отображения предупреждения.

Iопубликовать мой код. Вы можете обратиться к нему (не забудьте заменить значение com.google.android.maps.v2.API_KEY в AndroidManifest.xml)

https://github.com/851265601/MyMapdemo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...