Используем OpenStreetMap карты в Win8/WinRT

Многие по тем или иным причинам выбирают карты OpenStreetMap, но готовых решений для WinRT нету.

Выход простой: используем Bing SDK и переправляем запросы на изображения карты с Bing сервера на сервер OSM.

Делается это при инициализации страницы с контролом Map так:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//создаем слой тайлов
MapTileLayer layerOSM = new MapTileLayer();
 
//перенаправляем загрузку на сервер OSM
layerOSM.GetTileUri += (s, e) =>
{
  e.Uri = new Uri(string.Format("http://a.tile.openstreetmap.org/{0}/{1}/{2}.png", e.LevelOfDetail, e.X, e.Y));
};
 
//добавляем слой к карте
map.TileLayers.Add(layerOSM);
 
//выключаем посторонние слои на карте
map.MapType = MapType.Empty;
//создаем слой тайлов
MapTileLayer layerOSM = new MapTileLayer();

//перенаправляем загрузку на сервер OSM
layerOSM.GetTileUri += (s, e) =>
{
  e.Uri = new Uri(string.Format("http://a.tile.openstreetmap.org/{0}/{1}/{2}.png", e.LevelOfDetail, e.X, e.Y));
};

//добавляем слой к карте
map.TileLayers.Add(layerOSM);

//выключаем посторонние слои на карте
map.MapType = MapType.Empty;

Главная особенность данного метода в том, что можно продолжать пользоваться всем мощным функционалом Bing карт.

исходники