我有一张传单地图,我试图在加载新图块时从服务器动态加载一些信息,以创建叠加层。
为了测试这一点,我尝试的第一件事是在 onTileLoad 事件中简单地创建一个与加载的图块大小相同的透明矩形。我这样做是通过从加载的 URL 中拉出图块 X/Y,然后使用此页面中的代码:http ://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Derivation_of_tile_names将其转换为纬度/经度。
奇怪的是,我能够使多边形出现在正确位置的唯一方法是使用以下代码:
function onTileLoad(e) {
var tile=e.url.split("/");
var z=tile[tile.length-3];
var x=tile[tile.length-2];
var y=tile[tile.length-1].split(".")[0];
//console.log("x:"+x+"y"+y+"z"+z);
var southWest = new L.LatLng(tile2lat(y, z), tile2long(x-(-1.0), z)),
northEast = new L.LatLng(tile2lat(y-(-1.0), z), tile2long(x, z)),
bounds = new L.LatLngBounds(southWest, northEast);
//console.log("southwest: "+southWest+" northEast: "+northEast);
L.rectangle(bounds, {color: "#ff7800", weight: 1}).addTo(map);
您会注意到东北角是由以下创建的:y-(-1.0)
如果我改为 (y+1.0),这应该是同一件事,它会在错误的坐标中加载矩形,重叠已经加载的图块。
所以我的问题是:
1) 为什么 y - (-1.0) 与 (y+1.0) 不一样?2)有没有更好的方法来获取新加载的瓷砖的边界?
谢谢!