簡體   English   中英

OpenLayers-3 ol.proj.transform不適用於自定義投影

[英]OpenLayers-3 ol.proj.transform not working with custom projection

我正在努力使轉換與自定義投影配合使用。 我的地圖在新西蘭橫軸墨卡托(EPSG:2193)中。 我想在單擊地圖時將坐標轉換回EPSG:4326(長/緯度)。 這是我聲明投影,設置地圖和click事件處理程序的位置:

<script src="http://epsg.io/2193.js"></script>
<script src="http://epsg.io/4326.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.3.6/proj4.js"></script>   

var nztmproj = new ol.proj.Projection({
  code: 'EPSG:2193',
  extent: [827933.23, 3729820.29, 3195373.59, 7039943.58]
});
ol.proj.addProjection(nztmproj)
var map = new ol.Map({
  target: 'map',
  view: new ol.View({
    projection: nztmproj,
    center: [1824728.56,5534935.14],
    resolutions: [4233.333333,3175,2116.666667,1058.333333,529.1666667,264.58333333,132.2916667,92.60416667,66.14583333,39.6875,26.45833333,19.84375,13.22916667,9.260416667,6.614583333,5.291666667,3.96875,2.645833333,1.984375,1.322916667,0.661458333,0.264583333,0.132291667],
    zoom: 19
  })
});
map.on('click', function(evt) {
  var coord = evt.coordinate;
  var mygeom = new ol.geom.Point(coord);
  mygeom.transform(ol.proj.transform(nztmproj, 'EPSG:4326'));
  var newcoord = mygeom.getCoordinates();
  var lon = newcoord[0];
  var lat = newcoord[1];
  var element = overlay.getElement();
  element.innerHTML = lon + "," + lat;
  overlay.setPosition(coord);
  map.addOverlay(overlay);
});

當我嘗試單擊地圖時,出現TypeError:destinationProjection為null

如果您要設置jsfiddle,則會看到錯誤消息

ol.proj.addProjection(nztmproj)

正確:

ol.proj.addProjection(nztmproj);

不確定,您要如何處理:

mygeom.transform(ol.proj.transform(nztmproj, 'EPSG:4326'));

但是,首先轉換evt.coordinates會更容易嗎? 喜歡:

var coord = ol.proj.transform(evt.coordinate, nztmproj, 'EPSG:4326'); 

我很確定這不會輸出任何有效的EPSG:4326-coordinates(請參閱APIdoc ),但它與方案'transformfunction(coordinates,fromprojection,toprojection)有關

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM