как правильно реализовать mapbox в приложении xamarin forms - PullRequest
0 голосов
/ 08 июня 2019

Я только что загрузил naxam mapbox, и полностью потерян, страница github не очень помогает, и, кажется, больше ничего не может кто-нибудь дать полезного о том, как реализовать представление карты в приложении xamarin.forms, и спасибо.

1 Ответ

0 голосов
/ 18 июня 2019

Короткий Anwser:

Пакет Naxam.Mapbox для Xamarin.Forms Nuget и все связанные с ним формы не обновлялись с 12 сентября 2018 и Mapbox SDK. для Android / iOS изменились с тех пор, я попробовал этот пакет, и он немного неуклюжий, мне удалось отобразить карту, но вставка Geojson Sources / Markers не является приятным опытом. Также стоит упомянуть (за то, что я искал в LinkedIn), что Naxam больше не существует , что является причиной всех оставшихся без ответа проблем в репозитории GitHub.


Длинный ответ:

Если вы действительно хотите использовать Mapbox в своих проектах Xamarin, библиотеки привязки Naxam для Android и iOS все еще работают сегодня ( 18 / 06/2019 ), поэтому один из способов заставить его работать в проекте Xamarin Forms - это реализовать оба SDK в их соответствующем проекте и использовать их в Custom View Renderer (и будьте осторожны, поскольку этим проектам по-прежнему нужны другие пакеты Nuget, и они не предупреждают вас при их установке, обязательно ознакомьтесь с зависимостями в приведенных выше ссылках).

Другой способ получить карту в вашем проекте - использовать MapsUi (Помните, что MapsUi TileBased и Mapbox VectorBased , поэтому вы можете видеть меньше Текучесть при использовании MapsUi). я оставлю здесь некоторый соответствующий код для пользовательского рендеринга в iOS для начала реализации MapsUi:

MapViewRenderer.cs

public class MapViewRenderer : ViewRenderer<MapsUIView, Mapsui.UI.iOS.MapControl>
{
    Mapsui.UI.iOS.MapControl mapNativeControl;
    MapsUIView mapViewControl;

    protected override void OnElementChanged(ElementChangedEventArgs<MapsUIView> e)
    {
        base.OnElementChanged(e);

        if (mapViewControl == null && e.NewElement != null)
            mapViewControl = e.NewElement;

        if (mapNativeControl == null && mapViewControl != null)
        {
            var rectangle = mapViewControl.Bounds;
            var rect = new CGRect(rectangle.X, rectangle.Y, rectangle.Width, rectangle.Height);

            mapNativeControl = new Mapsui.UI.iOS.MapControl(rect)
            {
                Map = mapViewControl.NativeMap,
                Frame = rect
            };

            SetNativeControl(mapNativeControl);
        }
    }
}

Это основа того, как реализовать MapView в Custom View Render в iOS, подобный код необходим для Android, и, конечно же, сам Custom Renderer, который содержит множество учебников о том, как это сделать, например: Вот эти: Источник 1 Источник 2

...