2013-04-15 8 views
0

У меня есть карта листовки, и я пытаюсь загрузить некоторую информацию с сервера динамически, всякий раз, когда новая плитка загружается, чтобы создать оверлей.Нахождение границ листовой плитки после загрузки

Чтобы проверить это, первое, что я попробовал, просто создало в событии onTileLoad прозрачный прямоугольник того же размера, что и загруженная плитка. Я делаю это, вытаскивая фрагмент X/Y из загруженного URL-адреса, а затем используя код с этой страницы: 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) Почему у - (-1,0) не такой же, как у (+ 1,0)? 2) Есть ли лучший способ получить границы недавно загруженной плитки?

Спасибо!

+0

JavaScript интерпретирует + как конкатенацию строк. Я подозреваю. – flup

ответ

0

вам с помощью

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

, он будет работать.