Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   drag-map (непрерывно скролить, перетаскивать катинку) (https://javascript.ru/forum/dom-window/10528-drag-map-nepreryvno-skrolit-peretaskivat-katinku.html)

denlem 08.07.2010 14:10

drag-map (непрерывно скролить, перетаскивать катинку)
 
Нужен скрипт (пример , принцип работы) такого плана:
Есть картинка (к примеру карта мира) в каком то поле видимости на странице, мышкой тащим (или скролим как частный случай) ее (как карту google map) и она циклически повторяется в данном поле видимости (в дивчике) - т е непрерывно можно перетаскивать в какую либо сторону.
Может кто видел подобный скрипт в нете?

pandasensey 08.07.2010 14:11

я такой писал для проекта http://www.in-sfera.ru.

А вообще, есть несколько бесплатных гео движков, правда позабыл названия уже.

denlem 08.07.2010 16:38

ясно, а каким образом ты релоадишь те участки на которых уже побывал?
я заметил - они перерисовываются..
Т е при наведении на участок ты тянешь картинки с сервера, сохряняешь информацию о них в яваскрипт объекте, дальше
- ты удаляешь со странички(из HTML - кода) эти участки после перемещения видимой области на другой участок, и потом динамически опять добавляешь типа innerHTML из какого-то яваскрипт объекта (в который ты их сохранил) при повторном переходе на них?

pandasensey 09.07.2010 10:24

Удалять ни в коем случае ничего нельзя. Допустим, ты тянешь карту вниз. Нижняя граница видимой области карты уходит за нижнюю границу монитора, а верхняя спускается. Следовательно, нижние картинки нам не нужны. Я делал так: все картинки хранятся в дивах с абсолютным позиционированием. В описанном ранее случае, нижний ряд картинок (кстати их размер лучше делать 256 на 256) перепрыгивает на место над последним верхним рядом. Всем этим картинкам назначается src соответственно x=x; y = (y верхней картинки) + 1. Это в моей системе координат.
Аналогично в другие стороны: те картинки, которые переходят в невидимую область, перепрыгивают на место новых, еще не загруженных. В случае диагонального перетаскивания, делается в два прохода. Нужно еще отметить, что, чтобы этого не видел пользователь, нужно иметь запас в однин ряд от каждого края в невидимой зоне, так надежнее и плавнее. Еще надо учесть что количество картинок зависит от размеров видимой области на мониторе и при сжатии окна карта смещается относительно точки золотого сечения (так по-человечески правильно), а массив картинок пересчитывается, чтобы соответствовать изначальной структуре.
Надеюсь понятно объяснил:)

Скриптами с сервера я ничего не забираю. Картинки лежат уже нарезанные программно в одной папке.

Совет: посмотри firebug'ом карты google. Я много идей у них брал.

denlem 12.07.2010 11:13

Да самое оптимальное решение для понимания логики данной задачи: googlemaps + firebug
Разобрался, спасибо


Часовой пояс GMT +3, время: 20:18.