Короткий 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