加载后查找传单瓦片的边界

时间:2013-04-15 00:48:11

标签: leaflet

我有一张传单地图,我试图在加载新图块时动态地从服务器加载一些信息,以创建叠加层。

为了测试这个,我尝试的第一件事就是在onTileLoad事件中创建一个与加载的tile相同大小的透明矩形。我是通过从已加载的网址中拉出磁贴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)有没有更好的方法来获得新加载的瓷砖的边界?

谢谢!

1 个答案:

答案 0 :(得分:0)

你使用

(float.padre(y)+ float.pasre(1.0))?2p>

,它会起作用。