OpenLayers: подложка MapBox

Решенные задачи, первая запись - описание решения.
Ответить
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

OpenLayers: подложка MapBox

Сообщение Mavka » 15 дек 2010, 21:00

Готовые тайл-сеты от MapBox. Только часть из них покрывает весь мир (ищите с префиксом 'world'). Остальные рекомендую хотя бы посмотреть, у них очень красивый и оригинальный дизайн.

Terms of Service. Сами тайлы абсолютно свободные, можно скачивать, распространять и т.п. Если пользуетесь тайлами с сервера MapBox, то есть ограничения по трафику.

Выбираете понравившийся тайл-сет и открываете его (например). В правой части приводится блок с технической информацией и готовый код для вставки в html-страницу (Embed code for OpenLayers).

В сущности все заключается в загрузке доп. скрипта (определяет класс OpenLayers.Layer.MapBox):
И последующем подключении слоя:

Код: Выделить всё

var topo = new OpenLayers.Layer.MapBox("MapBox", {
layername: 'world-glass',
osm: true,
type: 'png',
serverResolutions: [
156543.0339,78271.51695,39135.758475,19567.8792375,
9783.93961875,4891.96980938,2445.98490469,1222.99245234,
611.496226172,305.748113086,152.874056543,76.4370282715,
38.2185141357,19.1092570679,9.55462853394,4.77731426697,
2.38865713348,1.19432856674,0.597164283371
],
resolutions: [
156543.0339,78271.51695,39135.758475,19567.8792375,
9783.93961875,4891.96980938,2445.98490469,1222.99245234,
611.496226172,305.748113086
]
});

Массивы разрешений (resolutions) смотрите во все том же "Embed code for OpenLayers".
Формат (type) всегда 'png'. Имя слоя (layername) смотрите в технической документации.

Примечание: конкретно для слоя 'world-glass' нужно задать для div'а карты темный фон иначе ничего не увидете (все объекты белого цвета с разной прозрачностью):

Код: Выделить всё

<div style="width: 512px; height: 341px; background: #441344" id="map"></div>


При подключении слоя MapBox на карте отображается логотип и ссылка на "Term of Service". Странно, но если при создании карты заполнить массив контроллеров:

Код: Выделить всё

map = new OpenLayers.Map('map', {
projection: new OpenLayers.Projection('EPSG:900913'),
...
controls: [
new OpenLayers.Control.PanZoomBar(),
new OpenLayers.Control.Navigation,
...
]
});
то логотип не показывается. В чем причина я особенно не разбирался. Обходится поздним добавлением контроллеров:

Код: Выделить всё

map.addControls([
new OpenLayers.Control.PanZoomBar(),
new OpenLayers.Control.Navigation,
...
]);


Если задать 'osm: true', то добавится указание лицензии OpenStreetMap - CCBYSA. Нужно его включать или нет смотрите для каждого тайл-сета отдельно в графе Sources.

P.S. Есть также инструкция по подключению слоев MapBox без использования доп. библиотеки. По сути это самые обычные TMS и OpenLayers умеет работать с ними напрямую.
лангольеры под окном жрали время ом-ном-ном

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: OpenLayers: подложка MapBox

Сообщение Максим Дубинин » 16 дек 2010, 06:28

Кстати странновато отрендерено местами, границы субъектов РФ есть, а у других стран нет.
И границы субъектов неправильные :)
Изображение
пристегивайтесь, турбулентность прямо по курсу

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: OpenLayers: подложка MapBox

Сообщение Mavka » 16 дек 2010, 10:22

sim
В sources написано - GAUL, что приводит нас к FAO из ООН. Все претензии туда.
лангольеры под окном жрали время ом-ном-ном

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: OpenLayers: подложка MapBox

Сообщение Максим Дубинин » 17 дек 2010, 04:12

претензий у меня не было, а источник весьма интересный
пристегивайтесь, турбулентность прямо по курсу

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: OpenLayers: подложка MapBox

Сообщение Denis Rykov » 21 мар 2013, 10:42

Прикрыли лавочку?
Spatial is now, more than ever, just another column- The Geometry Column.

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: OpenLayers: подложка MapBox

Сообщение Максим Дубинин » 21 мар 2013, 12:48

написал им в твиттер, авось ответят

кстати мои тайлы от mapbox на карте пользователей продолжают работать
пристегивайтесь, турбулентность прямо по курсу

Ответить

Вернуться в «Рецепты»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя