Я пытаюсь портировать сайт Openlayers2 на OL5. Реализация OL2 работала отлично в течение многих лет и не имеет проблем, описанных здесь.
У меня работает большинство вещей, но я озадачен следующим: отображаемая позиция мыши и события map.on все позиции отчета примерно в 5 км к югу и в 3 км к западу от истинного положения на карте.
Все карты являются сетками TMS в EPSG: 2193. Я разрешаю отображение координат наложения в проекциях диапазона - включая сетку NZ-метра NZTM2000 (EPSG: 2193) и широту / долготу WGS (EPSG: 4326). Но все координаты находятся примерно на 5 км / 3 км или их градусном эквиваленте в любой проекции, которую я использую. Величина ошибки остается постоянной для всех уровней масштабирования и для всей 2000 км / 3000 км области карты.
Соответствующие биты кода приведены ниже. Кто-нибудь видел что-нибудь подобное или получил какие-либо предложения о том, где можно попытаться найти / устранить ошибки? Это поставило меня в тупик.
proj4.defs('EPSG:2193', '+proj=tmerc +lat_0=0 +lon_0=173 +k=0.9996 +x_0=1600000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs');
ol.proj.proj4.register(proj4);
var view = new ol.View({
center: [1600000, 5500000],
zoom: 2,
projection: ol.proj.get('EPSG:2193'),
maxResolution: 4891.969809375,
numZoomLevels: 11
});
mpc= new ol.control.MousePosition({
coordinateFormat: createStringXY(current_projdp),
projection: ol.proj.get('EPSG:'+current_proj)
});
topo50_2009=new TileLayer({
source: new XYZ({
projection: ol.proj.get('EPSG:2193'),
url: 'http://au.mapspast.org.nz/topo50/{z}/{x}/{-y}.png',
maxResolution: 4891.969809375,
numZoomLevels: 11
}),
name: 'NZTM Topo 2009',
visible: true,
projection: ol.proj.get('EPSG:2193'),
maxResolution: 4891.969809375,
numZoomLevels: 11
});
map_map = new Map({
view: view,
target: 'map',
layers: [topo50_2009],
controls: defaultControls().extend([ mpc ]),
});
==
Относительно HTML - на этой стадии нет ничего, кроме карты.
<body>
<div id="map" class="map"></div>
<script> init_map(); </script>
</body>