Как кластеризовать Карты Google в формах Xamarin - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь кластеризовать маркеры на Google Map в моем приложении xamarin форм.Вот моя модель:

public class MapModel
{
    public Field[] Fields { get; set; }
}

public class Field
{
    public int Id { get; set; }
    public string Name { get; set; }
    public Node[] Nodes { get; set; }
    public string Icon { get; set; }
}

public class Node
{
    public float Long { get; set; }
    public float Lat { get; set; }
}

А вот служба, которую я использую для получения значений долготы и широты

class MapService
    {
        public static async Task<MapModel> GetMapData(string token, string lngCode)
        {
            try
            {
                MapModel mapModels = new MapModel();
                string url = DataURL.BASE_URL + "agronetmobile/mapdata?lngCode=" + lngCode;
                using (HttpClient client = new HttpClient())
                {
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
                    using (HttpResponseMessage message = await client.GetAsync(url))
                    {
                        if (message.StatusCode == System.Net.HttpStatusCode.OK)
                        {
                            string rawResponse = await message.Content.ReadAsStringAsync();
                            mapModels = JsonConvert.DeserializeObject<MapModel>(rawResponse);
                        }
                    }
                }
                return mapModels;
            }
            catch (Exception)
            {
                throw;
            }
        }
    }

Служба, возвращающая правильные значения, но я даже не представляю, какиспользовать их.Я установил Xamarin.Forms.GoogleMaps.Clustering и попытался найти хорошее пошаговое руководство, но ничего полезного не нашел.Многие учебники о Xamarin.Android.Я использую шаблон MVVM.enter image description here

1 Ответ

0 голосов
/ 24 мая 2019

это ссылка как использовать Карты в Xamarin.Forms

1.Установите Xamarin.Forms.Maps NuGet пакет

2. Xamarin.Forms.Forms.Init метод требуется в каждом проекте приложения

3. Конфигурация платформы (см. Ссылку )

4.После того, как вы получаете положение от службы, поэтому после получения правильных значений вы можете сделать следующее:

//new Position(37,-122) is your postion center
var map = new Map(
 MapSpan.FromCenterAndRadius(new Position(37,-122), Distance.FromMiles(0.3))) {
            IsShowingUser = true,
            HeightRequest = 100,
            WidthRequest = 960,
            VerticalOptions = LayoutOptions.FillAndExpand
        };
    var stack = new StackLayout { Spacing = 0 };
    stack.Children.Add(map);
    Content = stack;

если вы хотите добавить пин-код на карту, вы можете использовать

var position = new Position(37,-122); // Latitude, Longitude
var pin = new Pin {
        Type = PinType.Place,
        Position = position,
        Label = "custom pin",
        Address = "custom detail info"
    };
map.Pins.Add(pin);
...