我正在制作一个传单项目,我需要坐标0到4096,我需要的传单坐标如下:
0,0 bottom left (southWest)
0,4096' top left (northWest)
4096',4096' top right (northEast)
4096',0 bottom right (southEast)
我已经尝试了许多方法来根据需要绘制坐标但没有运气。这是我的jsfiddle和我的例子,当你点击显示坐标的地图时,它有一个console.log。如果你点击左上角你会看到它的0,0如果你点击右下角你会看到4096,4096这是从需要的什么向后。这是我的代码
url = 'http://{s}.tile.osm.org/{z}/{x}/{y}.png';
weight = 4096;
height = 4096;
mapMinZoom = 1;
mapMaxZoom = 7;
map = L.map('map', {
maxZoom: mapMaxZoom,
minZoom: mapMinZoom,
noWrap: true,
detectRetina: true
});
unproject = function(coord) {
return map.unproject(coord, 4);
};
southWest = unproject([0, 0]);
northEast = unproject([height, weight]);
map.setMaxBounds(new L.LatLngBounds(southWest, northEast));
tileLayer = L.tileLayer(url, {
minZoom: mapMinZoom,
maxZoom: mapMaxZoom,
noWrap: true,
tileSize: 256,
detectRetina: false
}).addTo(map);
map.setView(unproject([0, 0]), 2);
map.on('click', function(e) {
var coords, latLong;
latLong = new L.LatLng(e.latlng.lat, e.latlng.lng);
coords = map.project(latLong, 4);
console.log("x="+coords.x+", y="+coords.y);
});
答案 0 :(得分:2)
如果我理解正确,你会想要这样的地图坐标:
[0, 4096] .. [4096, 4096]
.........................
.........................
[0, 0] ........ [4096, 0]
当上升时垂直坐标增加(如Leaflet上的纬度)并且向右上方(如Leaflet上的经度)增加水平坐标是好的。所以你似乎不需要反转垂直轴。
至于坐标的顺序,不幸的是,Leaflet首先使用纬度,第二次使用经度,并且几乎不可能原生地切换它们。但是,您可以轻松构建仅交换坐标的包装器方法。 (类似于Leaflet LatLngBounds with simpler CRS & projection,但不需要使用负垂直坐标-y
,因为在您的情况下,您希望它与纬度方向相同)
然后另一个问题是你希望坐标介于那四个角落。默认CRS(Web墨卡托)沿垂直轴不是线性的。如果您需要坐标是线性的,则应使用L.CRS.Simple
。请参阅传单tutorial for non-Earth-based maps。