簡體   English   中英

Openlayers-轉換時獲取不正確的LonLat?

[英]Openlayers - Getting Incorrect LonLat while transform?

我試圖獲得一個點的LatitudeLongitude 但是,在進行轉換時,它不會返回正確的LonLat 這是很大的數字,是不是lonlat肯定的點。

我已經嘗試了一些解決方案,但沒有得到結果。 還有什么可能會失敗?

我嘗試過的JS代碼

map = createMap("deviceMap");
var fromProjection = new OpenLayers.Projection("EPSG:4326"); 
var toProjection = new OpenLayers.Projection("EPSG:900913"); 

map.events.register('click', map, function handleMapClick(e) {
          lonLat = self.map.getLonLatFromViewPortPx(e.xy).
          transform(map.getProjectionObject(), toProjection);
          prompt("",lonLat);
});

終於得到答案

map.events.register('click', map, function handleMapClick(e) {
                var toProjection = new OpenLayers.Projection("EPSG:4326");
                var lonLat = map.getLonLatFromPixel(e.xy).
                             transform(map.getProjectionObject(), toProjection);
    });
  • EPSG:4326
    • 應該參考WGS 84,
    • 有十進制度數
  • EPSG:900913
    • 指WGS84 Web墨卡托
    • 具有公制值,它是x / y軸坐標系,因此應該是“高數字”

如果我沒看錯,您應該在變量lonLat中增加一個大數字。

OpenLayers中的“ LonLat”並不意味着它只是經度/緯度,請參閱此處的文檔:

  • lon {Number}以地圖單位表示的x軸坐標。 如果您的地圖在地理投影中,則為經度。 否則,它將是地圖單位中地圖位置的x坐標。

  • lat {Number}以地圖為單位的y軸坐標。 如果您的地圖在地理投影中,則為緯度。 否則,它將是地圖單位中地圖位置的y坐標。

因此,如果要獲取真實的LonLat坐標,則不應轉換(並使用EPSG:4326)或將其轉換為其他坐標系,而不是EPSG:900913。

順便說一下,OpenLayers開始使用900918(相當於GOOGlE的數字),由Christopher Schmidt先生定義,首先,它未被歐洲石油測量集團(EPSG)接受。 然后EPSG改變了主意,給了他們號碼:3857-WGS84偽墨卡托。

暫無
暫無

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

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