Карта центра Openlayers 3
Я пою OpenLayers 3 для отображения карты. Я хочу, чтобы центрировать карту с помощью latLon координаты.
Я использую краткое руководство код для начала.
Используя этот код, я не могу изменить центр карты. Я думаю, это как-то связано с Spherical Mercator projection
. Только у меня есть только координаты лат лона.
кто-нибудь знает, как центрировать карту из openlayers v3?
2 ответов
вам нужно преобразовать координаты lon/lat в правильную проекцию (или систему координат) с помощью
var olCoordinates = ol.proj.transform([lon, lat],"WGS84", "EPSG:900913")
Теперь вы можете установить центр с olCorrdinates.
разные проекции имеют разные кодовые имена. WGS84 является "нормальным" lon/lat и EPSG:900913-это проекция, часто используемая в веб-картах, таких как google maps, openstreetmap и bing.
Я думаю, что OpenLayers 3 имеет встроенную поддержку преобразования из WGS84 / EPSG:4326 (lon/lat), но если вам нужно преобразование в другие системы координат или из них можно включить библиотеку proj4js. Openlayers интегрируется с этим lib и сможет выполнять преобразования таким же образом.
преобразовать документации http://openlayers.org/en/v3.1.1/apidoc/ol.proj.html
виде proj4 Либ https://github.com/proj4js/proj4js
изменить: В Примере, на который вы ссылаетесь, центральное расположение фактически установлено с помощью lon/lat.
view: new ol.View({
center: ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857'),
zoom: 4
})
координат EPSG:4326, то есть фактически такой же, как и WGS84 координат EPSG:3857 такой же, как проекцию EPSG:900913. Это очень сложно. Я сам там был.
вам просто нужно изменить номера 37.41 и 8.82 на ваши координаты lon/lat. Если вы хотите изменить расположение центра после инициализации вам будет нужно использовать setCenter();
map.getView().setCenter(ol.proj.transform([lon, lat], 'EPSG:4326', 'EPSG:3857'))
OpenLayers представил ol.proj.fromLonLat
и ol.proj.toLonLat
функции on Mar. 2015.
чтобы центрировать карту, вы можете использовать ее во время инициализации
view: new ol.View({
center: ol.proj.fromLonLat([lon, lat])
})
или после того, как карта была создана
map.getView().setCenter(ol.proj.fromLonLat([lon, lat]))
хотя они просто фантики of ol.proj.transform
, я нахожу их более простыми в использовании.
веб-Меркаторами по умолчанию являются EPSG:4326
и EPSG:3857
.
как Оле Вогдегѕепбыл государства, WGS84
это то же самое, что EPSG:4326
который является типом координат Long-Lat, с которыми мы привыкли работать.
ol.proj.fromLonLat([lon, lat]);
// is equivalent of
ol.proj.transform([lon, lat], 'EPSG:4326', 'EPSG:3857')
ol.proj.toLonLat([lon, lat]);
// is equivalent of
ol.proj.transform([lon, lat], 'EPSG:3857', 'EPSG:4326')