0

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

为了测试这一点,我尝试的第一件事是在 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)有没有更好的方法来获取新加载的瓷砖的边界?

谢谢!

4

1 回答 1

0

你用

(float.pasre(y)+float.pasre(1.0))?2)

,它会工作的。

于 2013-10-23T15:32:46.610 回答