MKMap не отображает наложение плитки Open Street Map

Я пытаюсь отобразить плитку OSM как слой над картой Apple на MKMapView в Xamarin iOS

private MKTileOverlay _tileOverlay;
...... 
public override void ViewDidLoad ()
{
  .....
  MapDelegate _mapDelegate = new MapDelegate ();
  map.Delegate = _mapDelegate;
  .....

  String urlTemplate = "http://tile.openstreetmap.org/{z}/{x}/{y}.png";
  _tileOverlay = new MKTileOverlay(urlTemplate);
  _tileOverlay.CanReplaceMapContent = true;
  map.AddOverlay(_tileOverlay, MKOverlayLevel.AboveLabels);

  .....
}

и переопределить OverlayRenderer в классе " MapDelegate: MKMapViewDelegate "

public override MKOverlayRenderer OverlayRenderer (MKMapView mapView, IMKOverlay overlay)
    {
        if (overlay is MKTileOverlay) 
        {
            var tile = (MKTileOverlay)overlay;
            var renderer = new MKTileOverlayRenderer (tile) {
            };

            return renderer;
        }
        return null;
    }

Запустив приложение я вижу пустой слой без OSM.

1 ответ

Решение

Какую версию iOS вы используете?

Начиная с iOS9, Apple Transport Application Security (ATS) по умолчанию требует использования HTTPS.

Если вы хотите (или должны) использовать HTTP, вы должны отредактировать Info.plist разрешить конкретное (или глобальное) использование HTTP. См. Документацию Xamarin для более подробной информации.

Другие вопросы по тегам