【发布时间】:2018-03-05 23:27:55
【问题描述】:
我正在尝试使用我自己的图块生成带有 Leaflet 的自定义非地理地图。
目前,我使用 imagemagick 创建了 10x10 大小为 256x256 像素的虚拟图块,每个图块具有随机纯色。 它们被放置在 public/map-tiles/1/map_x_y.png 中,其中 x 取值从 0 到 9(分别为 y)。
由于这是非地理地图,所以注意将crs改为L.CRS.Simple(见http://leafletjs.com/examples/crs-simple/crs-simple.html):
var map = L.map('map', {
minZoom: 1,
maxZoom: 1,
center: [0, 0],
crs: L.CRS.Simple
}).setView([0, 0], 1);
L.tileLayer('/map-tiles/{z}/map_{x}_{y}.png', {
bounds: [[0, 0], [2560, 2560]],
tms: true
}).addTo(map);
但是,这会产生轻微偏移的图块并因此未对齐:
此外,还会获取 y 坐标为负的图块,这会导致 404d 请求,如控制台所示。
此行为的原因可能是什么?
编辑 1:正如 IvanSanchez 指出的那样,错位是由于缺少 leaflet.css 样式表造成的。
我仍然有负坐标的问题。正如建议的那样,我添加了界限(请参阅上面的更新代码)。观察:
- 边界为 [[0, 0], [2560, 2560]]:完全不显示图块,空白屏幕。
- 边界为 [[-1280, -1280], [1280, 1280]]:显示所有图块,但提取了负图块(例如 (5,-1)),导致 404 秒。
编辑 2:经过多次测试,看起来负图块确实是 y 轴处理的产物 (http://leafletjs.com/examples/wms/wms.html)。原点在左上角,y 向下。我希望获取原点下方的图块,而不是上方。
为了保持我的约定,x 和 y 都增加(即 x 向右增加,y 向下增加,从 0 到 9 获取具有正坐标分量的图块),我尝试了什么:
- 为 tileLayer 设置
tms: true。没有成功,y 为负的图块仍然被提取。 - 在 tileLayer 源路径中将
{y}更改为{-y}。结果为Error: No value provided for variable {-y}。我的脚本使用的是 Leaflet 1.3.1。
【问题讨论】:
标签: javascript leaflet tile