我正在嘗試構建遊戲激戰2的地圖,但是無法讓openlayers正確處理座標系並完全呈現地圖。如何爲平面1:1像素座標系配置Openlayers?
這裏是什麼,我有一個小提琴:兩軸https://jsfiddle.net/ndqb8rqx/
激戰世界廣場和49152像素。座標原點([0, 0]
)應該是西北。東南應該是[49152, 49152]
。遊戲開發商製作了地圖圖塊可以作爲一項服務:https://wiki.guildwars2.com/wiki/API:Tile_service
我創建了一個基於Zoomify一個Projection
設法處理這個問題:
var gw2Projection = new ol.proj.Projection({
code: 'ZOOMIFY',
units: 'pixels',
extent: [0, -49152, 49152, 0]
})
而且我還添加了遊戲的瓷磚作爲來自XYZ源的Tilelayer,如下所示:
new ol.layer.Tile({
source: new ol.source.XYZ({
url: 'https://tiles.guildwars2.com/1/1/{z}/{x}/{y}.jpg',
projection: gw2Projection
}),
}),
第一個問題是,openlayers不顯示完整的映射。地圖實際上比小提琴表演更向南和東延伸。實際上在小提琴中顯示的右下邊緣實際上是[32768, 32768]
,但是該地圖延伸到[49152, 49152]
。看起來,當完全縮小時,openlayers只需將座標系縮小到單個區域的區域即可。相反,我希望座標與像素匹配1:1。
另一個問題是目前北方向的y座標增加。我想反轉y軸,使得y座標在南方向增加。
謝謝你的回答,但不幸的是我真的沒有看到有區別嗎? 座標相同,y軸方向仍然相同,並且地圖的缺失部分仍未顯示。我可以看到的唯一區別是您將視圖集中在地圖上。 – FrederikNS