Это немного нетрадиционный метод, но мне показалось, что он потенциально (теоретически, с неограниченным пространством хранения) бесконечен.
Вам нужно будет сохранить загруженный в данный момент кусок доски, заданный в виде уникального идентификатора. Куски и их данные должны быть в таблице со следующими столбцами:
- Идентификатор чанка
- Данные чанка
- ID чанка на север
- ID юга
- ID Востока
- ID Запада
Вам нужно сделать холст перетаскиваемым, возможно, с помощью jQuery или аналогичного ( этот вопрос содержит информацию об этом).
Теперь создайте прослушиватель событий для перетаскиваемого холста и отслеживайте расстояние, на которое он перемещается. Если после отпускания холст не изменился на другой фрагмент, ничего не делать.
Если холст покинул текущий блок, используйте сохраненный идентификатор, чтобы найти следующий блок для загрузки. Если идентификатор равен 0, предположим, что фрагмент еще не существует, и создайте его. В противном случае загрузите чанк, заменив существующий чанк. Установите холст обратно по центру.
С достаточно длинными идентификаторами и достаточным пространством для хранения это даст вам бесконечный холст, так как система координат не используется. Это также позволяет обернуть края или создать червоточины.
Как это реализовать, я не совсем уверен, но вам нужно только отследить, как далеко холст был перемещен. Google Maps делает нечто подобное, поэтому я посмотрю, как они справляются с этим (я сделаю это в ближайшее время и посмотрю, смогу ли я добавить некоторые подробности реализации к этому ответу).
Возможно, это не самый практичный или самый простой метод, но было забавно придумать.
Редактировать: Я считаю, что это соответствует основной функциональности:
http://candrews.net/blog/2010/10/introducing-sprymap/
Это легкая перетаскиваемая карта JavaScript. Тогда вам просто нужно отследить, как далеко.