Я пытаюсь сделать Proof of Concept (C #) для основных графических карт в качестве альтернативы Google Maps для устройств Andriod и iOS - потому что Google начал взимать платудля их API (насколько я понимаю, влияет только на веб прямо сейчас).
Мне не нужно быть особенно продвинутым, просто графический интерфейс пользователя, который показывает базовую карту, где вы можете рисовать:
Единственные требования, которые у меня есть, это то, что это должно быть с открытым исходным кодом , или при низкой стоимости, насколько это возможно .
До сих пор я использовал данные из http://openstreetmap.org - и настроил сервер плиток https://switch2osm.org/serving-tiles/ на отдельном компьютере с Linux.
Кроме того, онЯ довольно быстро создал простое веб-приложение с OpenLayers.js и Leaflet.js, подключенными к пользовательскому серверу плиток с выполненными требованиями.
Теперь мне нужно найти бесплатный или дешевый мобильный SDKдля Xamarin для Android и iOS.Мне удалось отобразить карту с моего собственного сервера плиток и добавить маркеры, обратившись к файлам .dll из этого почтового индекса 2014 года (проверено только для Andriod): https://github.com/OsmSharp/ui/releases/tag/v4.2.0.723
using OsmSharp.Android.UI;
using OsmSharp.Android.UI.Data.SQLite;
using OsmSharp.Math.Geo;
using OsmSharp.UI.Map;
using OsmSharp.UI.Map.Layers;
[Activity(Label = "@string/app_name", MainLauncher = true)]
public class MainActivity : AppCompatActivity
{
private MapView _mapView { get; set; }
private Layer _mapLayer { get; set; }
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
try
{
Native.Initialize();
_mapView = new MapView(this, new MapViewSurface(this))
{
MapTilt = 0,
MapCenter = new GeoCoordinate(lat, long),
MapZoom = 16,
Map = new Map()
};
// create a marker under Resources/drawable/pin.png
using (var bitmap = BitmapFactory.DecodeResource(Resources, Resource.Drawable.pin))
{
var marker = new MapMarker(this, new GeoCoordinate(lat, long), MapMarkerAlignmentType.CenterBottom, bitmap);
_mapView.AddMarker(marker);
}
_mapLayer = _mapView.Map.AddLayerTile("http://*.*.*.*/{0}/{1}/{2}.png");
SetContentView(_mapView);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
}
Однако эти библиотеки DLL, похоже,не хватает поддержки линий и полигонов.Я пытался получить что-то похожее на работу с последним пакетом NuGet от OsmSharp (2018-06-04), но мой опыт новичка в Xamarin только дошел до меня.
У кого-нибудь есть какие-либо советы о том, как использовать мой собственныймозаичный сервер и рендеринг собственных карт на устройствах Android и iOS ?
PS.Строго не обязательно быть OpenStreetMap с OsmSharp, подключенным к пользовательскому серверу плиток, это то, к чему я сейчас склоняюсь.Опять же, требуются с открытым исходным кодом или по низкой стоимости с возможностью добавления маркеров, линий и полигонов.