2013-03-08 5 views
1

У меня есть таблица в моей базе данных с размером 2.500 плиток, поэтому 50 х 50. Размер интерфейса 256 пикселей x 256 пикселей на плиту, и не должно быть уровней масштабирования. Тогда таблицы, в которых хранятся другие данные (здания, объекты), и каждый из этих объектов может принадлежать определенной плитки.Могу ли я использовать OpenLayers для простой пользовательской системы сетки?

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

Я также не хочу делать изображения (pngs) - плитки должны быть пустыми <div> s или, по крайней мере, прозрачными, потому что фон тела является повторяющейся текстурой травы в любом случае, и я хочу включить <img> s в зависимости от объекты, связанные с плиткой в ​​модели.

Может ли кто-нибудь, знакомый с OpenLayers, сказать мне, возможно ли это с такой простой пользовательской моделью на бэкэнд? Любые ресурсы по этому конкретному делу будут очень полезны!

+0

Это пришло в голову, не уверен, что это то, что вы хотите: http://stackoverflow.com/questions/11271704/jquery-drag-div-css-background/11272092#11272092 –

+0

На самом деле я пробовал кодировать всю карту интерфейса и я столкнулся с проблемами производительности и другими вещами, поэтому я подумал, что, возможно, я могу использовать то, что уже хорошо работает и адаптируется к нему. – codepushr

ответ

1

Да, это возможно в OpenLayers, если каждая плитка в вашей таблице имеет некоторые связанные с ней геопространственные данные, такие как Bounds или Lat/Lon угла.

OpenLayers хочет размещать базовые слои (ваши плитки как WMS) и функции (ваши здания и объекты как WMS, WFS или Vector) геопространственно в окне просмотра браузера. Хитрость заключается в том, чтобы ограничить OpenLayers до одного уровня масштабирования (разрешения) в соответствии с неявным разрешением ваших сохраненных фрагментов, а затем установить maxExtent вашего объекта OpenLayers.Map в соответствии со степенью всех ваших фрагментов, чтобы каждый запрос WMS-плитки OpenLayers имеет ограничивающий прямоугольник, который соответствует одному из ваших фрагментов.

Вот запрос WMS, созданный OpenLayers для простого базового слоя, который у меня есть (BBOX находится в метрах). Ссылка находится за брандмауэром, поэтому он не будет работать для вас:

http://kpnatsp8:9080/WmsServlet?SERVICE=USSTATES&TRANSPARENT=FALSE&FORMAT=image/png&LAYERS=USSTATES&SCALE=4000000.0000000005&SPHERICALMERCATOR=true&MAXEXTENT=-20037508.34,-20037508.34,20037508.34,20037508.34&REQUEST=GetMap&STYLES=&SRS=EPSG:900913&BBOX=-12812623.352549,3443367.869216,-11909512.729118,4346478.492647&WIDTH=640&HEIGHT=640 

У меня есть сервлет Java, который принимает этот запрос и возвращает мозаичное изображение. Вы должны написать свой собственный сервлет или серверный скрипт, чтобы принять запрос, определить, какая плитка в вашей базе данных соответствует границам BBOX, и вернуть этот фрагмент в качестве ответа на изображение.

Извините, если я здесь педантичен, но вы новичок в OpenLayers. Так я начинаю, но я открыт для лучших идей.

Смежные вопросы