Я пытаюсь найти что-то, желательно F / OSS, которое может генерировать наложение Google Maps из данных KML и / или KMZ.
У нас есть сайт для мероприятий, над которым мы работаем, который в прошлом году должен был вместить ~ 16 000 маркеров мест, и, вероятно, в этом году их будет как минимум столько же. В прошлом году компания, создавшая сайт, просто загрузила данные KML непосредственно в gMaps API и позволила разместить все маркеры на стороне клиента. Очевидно, это превратилось в кошмар производительности и, как правило, заставляло старые браузеры «зависать» (или, по крайней мере, казаться зависшими на несколько минут за раз).
В идеале этот серверный скрипт должен взять KML, координату широты и долготы карты, а также уровень масштабирования карты и соответствующим образом объединить все видимые маркеры мест в единый оверлей в формате GIF или PNG.
Будем очень признательны за любые указания или рекомендации по этому поводу.
ОБНОВЛЕНИЕ 08.10.2008 - Большая часть информации, с которой я столкнулся здесь и в других местах, похоже, указывает на то, что уменьшение количества точек на карте - это лучший способ (т. Е. Использование одного маркера для представления нескольких при просмотре с большей высоты / уровня масштабирования ). Хотя в некоторых случаях это, вероятно, хороший подход, здесь он не сработает. Мы ищем визуальный эффект карты США с множеством тысяч маркеров на ней. Один из вариантов, который я исследовал, - это служба под названием PushPin, которая при загрузке (предположительно) KML создает на стороне сервера наложение, в котором все видимые точки (на основе центральной широты / долготы и уровня масштабирования) отображаются на одном изображении. , поэтому вместо того, чтобы выполнять несколько тысяч манипуляций с DOM на стороне клиента, мы объединяем все эти маркеры в одну сторону сервера изображений и выполняем одну манипуляцию с DOM на стороне клиента. Сервис PushPin действительно хорош и определенно работал бы, если бы не связанные с этим расходы. Мы действительно ищем что-то F / OSS, которое мы могло бы запускать на стороне сервера, чтобы самостоятельно сгенерировать этот оверлей.






Это сложный вопрос. Вы можете использовать пользовательские наборы тайлов с Google Maps, но вам все равно нужен какой-то способ генерировать плитки (кроме ручного).
Боюсь, это все, что у меня есть = /
Вы можете посмотреть что-нибудь вроде Геосервер или Mapserver. Это клоны карт Google и многое другое.
Вы можете создать наложение, которое вам нравится, и Geoserver (я думаю, что и mapserver тоже) может предоставить вам KML, PDF, png и другие выходные данные для смешивания ваших карт, или вы можете сгенерировать всю карту самостоятельно, но это требует времени .
Это интересно, посмотрю, подойдут ли они для наших целей.
Мы демонстративно заглянем в GeoServer и GeoWebCache!
Я не знаю, как у вас дела со своим проектом, но, может быть, вы можете взглянуть на GeoDjango? Этот модифицированный выпуск Django включает в себя все виды инструментов для хранения местоположений; конвертировать координаты и отображать карты простым способом. Конечно, вам понадобится опыт работы с Python и сервер для его запуска, но как только вы освоите Django, он будет работать быстро и хорошо.
Если вам просто нужно решение вашей проблемы, попробуйте сгруппировать результаты с более низкими уровнями масштабирования, хорошим примером этой реализации может быть здесь.
Я не знаю, может ли Django / Python нарушить условия сделки, но я никогда раньше не работал ни с одной из этих технологий. Ядро этого сайта будет размещено в Drupal по запросу клиента, так что бэкэнд PHP будет идеальным вариантом. Однако я проверю этот вариант.
OpenLayers - отличный интерфейс javascript для нескольких картографических сервисов или ваших собственных картографических серверов. Только что была выпущена версия 2.7, в которой добавлены довольно удивительные функции и элементы управления.
Не знаете, почему вы хотите перейти на оверлей GIF / PNG, вы можете сделать это прямо в KML. Я предполагаю, что большая часть ваших проблем с производительностью была вызвана точками за пределами текущего представления пользователя, то есть пользователь смотрит на Нью-Йорк, но у вас есть точки в Лос-Анджелесе, которые тратят память, потому что они не видны. Если у вас действительно есть 16000 очков, которые видны одновременно для типичного, тогда да, вам нужно следовать другой стратегии.
Если вышесказанное применимо, процедура будет следующей:
Это может не решить вашу конкретную проблему здесь, но для решения связанных проблем вы также можете изучить API статических карт Google. Это позволяет вам создать файл статического изображения с метками на нем, который будет загружаться очень быстро, но не будет иметь интерактивности обычной карты Google. Однако из-за того, как разработан API, он также не может обрабатывать около 16000 точек, поэтому вам все равно придется фильтровать до представления.
План состоит в том, чтобы иметь представление на национальном уровне, показывающее полный набор данных, так что да, нам действительно нужно, чтобы все точки отображались одновременно. Мы разрешим масштабирование и можем работать с радиусами просмотра уровня масштабирования, чтобы использовать меньшие наборы данных KML по мере того, как пользователь детализирует детализацию, но нам нужно иметь возможность отображать все.
Я бы принял стратегию поиска кластеров событий, которые вы можете свести к одной метке на национальной карте, которая затем будет гиперссылкой на вид только этого города. Метод будет аналогичным, но вам нужно будет использовать версию формулы Хаверсина, чтобы найти точки, находящиеся в пределах «x» миль.
да, конечно, я думаю о наложении, но я особенно надеюсь на что-то на стороне сервера, которое будет генерировать наложение на основе KML, центральной широты / долготы и уровня масштабирования.