Xamarin SDK для OpenStreetMap - PullRequest
       14

Xamarin SDK для OpenStreetMap

0 голосов
/ 14 сентября 2018

Я пытаюсь сделать 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, подключенным к пользовательскому серверу плиток, это то, к чему я сейчас склоняюсь.Опять же, требуются с открытым исходным кодом или по низкой стоимости с возможностью добавления маркеров, линий и полигонов.

...