Карта центра 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')