У меня есть карта листовки, и я пытаюсь загрузить некоторую информацию с сервера динамически, всякий раз, когда новая плитка загружается, чтобы создать оверлей.Нахождение границ листовой плитки после загрузки
Чтобы проверить это, первое, что я попробовал, просто создало в событии 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) Есть ли лучший способ получить границы недавно загруженной плитки?
Спасибо!
JavaScript интерпретирует + как конкатенацию строк. Я подозреваю. – flup