2015-11-11 2 views
1

Я участвую в проекте карты с ol3 (v 3.10) Я изменил проекцию моей карты (я думаю) на «epsg 4258», которая является ETRS89.Почему openlayers возвращает проецируемые координаты на карте?

var customExtent = [-0.6172644,39.3868231,-0.43508204,39.44951748]; 
var etrs89 = new ol.proj.Projection({ 
     code: 'EPSG:4258', 
     // The extent is used to determine zoom level 0. Recommended values for a 
     // projection's validity extent can be found at http://epsg.io/. 
     extent: customExtent, 
     units: 'degrees' 
    }); 

Теперь я настраиваю карту с этой проекцией.

var map = new ol.Map({ 
     controls: ol.control.defaults({ 
      attributionOptions: /** @type {olx.control.AttributionOptions} */ ({ 
       collapsible: false, 
       units: 'degrees' 
      }) 
     }).extend([mousePositionControl,new ol.control.FullScreen()]), 
     target: 'map', 
     view: new ol.View({ 
      center: ol.proj.fromLonLat([-0.4685, 39.4315]), 
      zoom: 14   
     }), 
     layers: [ 
     ortofoto, 
     muni_torrent 
     ] 
}); 

наконец щелчок слушатель выглядит следующим образом:

var onclick = function(e){ 
    alert(e.coordinate); 
}; 
map.on('click', onclick); 

выход я получаю это:

[-53391.90122271185, 4785457.359197952] 

, но я ожидал что-то вроде:

[-0.4, 39.9] 

Я также попробовал следующее с тем же результатом :

var onclick = function(e){ 
    var lonlat = map.getCoordinateFromPixel(e.pixel) 
    alert('longitud: ' + lonlat[0]+ '; latitud: ' + lonlat[1]); 
}; 

Похоже, что событие клика не выводит координаты в проекции карты. Некоторые идеи? Любая помощь будет оценена по достоинству.

+0

Вы просите о помощи и получили его, теперь самое время дать отзыв. –

ответ

2

По умолчанию изображение EPSG: 3857 (сферический меркатор), так что вы видите как координаты.

Вам необходимо указать EPSG: 4258 в качестве проекции вашего изображения. См.: http://openlayers.org/en/v3.10.1/examples/sphere-mollweide.html?q=mollweide для примера о том, как указать пользовательскую проекцию представления.

0

coordsDiv.textContent = 'lat:' + Math.round (event.latLng.lat()) + ',' + 'lng:' + Math.round (event.latLng.lng());

+0

Не работает для меня, так как в моей версии openlayers нет метода latLng. Но спасибо за ответ! –

Смежные вопросы