【发布时间】:2019-09-06 22:34:02
【问题描述】:
我有一个简单的虚构地图,我想使用 Leaflet 来控制它。它是一个平面二维平面,其“纬度/经度”/坐标系跨越[0,0] 到[999,999]。
我已将地图自定义如下:
window.map = L.map('leaflet-map', {
crs: L.CRS.Simple,
center: [500, 500],
zoom: 13,
maxBounds: [
[0, 0],
[999, 999],
],
layers: [new MyLayer()],
});
为了绘制这张地图,我创建了一个新层 MyLayer,它扩展了 gridLayer:
export var MyLayer = GridLayer.extend({
createTile: function(coords, done) {
var error;
var xmlhttprequest = new XMLHttpRequest();
xmlhttprequest.addEventListener('readystatechange', function() {
done(error, dothething());
});
xmlhttprequest.open('GET', /* url */);
xmlhttprequest.send();
},
});
我遇到的问题是 URL 接受 [0,0] 到 [999,999] 坐标系作为参数,但我找不到实际获取这些参数的方法。我知道可能会有一些小数元素,但我可以酌情floor。
当以[500, 500, 13] 为中心时,coords 对象包含{ x: 15516, y: -21558, z: 13 }。当传递给L.CRS.Simple.pointToLatLng(coords, coords.z) 时,我得到{ lat: 2.631591796875, lng: 1.89404296875 }。
我已经下载了源代码,试图了解这种转换是如何从Map._move(center, zoom, data) 发生的,但似乎所做的只是调用this.options.crs.latLngToPoint(),这正是我在L.CRS.Simple.pointToLatLng 中反转的内容。坦率地说,我很茫然。
【问题讨论】:
标签: javascript leaflet