Вопрос:

Google Maps - тысячи маркеров - JSON

javascript json google-maps google-maps-markers

7989 просмотра

5 ответа

965 Репутация автора

В следующем примере маркеры загружаются из JSON.

Если есть 20 000 маркеров, JSON будет довольно большим.

Есть ли способ отправить разные файлы JSON в соответствии с уровнем масштабирования вместо одного огромного массива?

http://gmaps-utility-library.googlecode.com/svn/trunk/markermanager/release/examples/weather_map.html

Автор: Franek Источник Размещён: 29.04.2009 06:57

Ответы (5)


0 плюса

43575 Репутация автора

Возможные способы решения этой проблемы:

  • Сборка JSONна стороне сервера, в зависимости от уровня масштабирования (con: требуется перезагрузка после масштабирования, pro: нужно загружать только небольшие объемы данных)
  • Включите информацию о том, как маркер доступен в JSONданных (pro: нужно загрузить только один раз, констатируйте данные с помощью JavaScript)
  • Рассчитать видимые маркеры в JavaScript(про: очень динамично, против: большая вычислительная нагрузка)
Автор: TheHippo Размещён: 29.04.2009 07:03

8 плюса

94114 Репутация автора

Есть понятие «ограничивающий прямоугольник» для вида карты. Карта API предоставляет вам это как две пары координат широта / длинна - одна для угла SW, а другая для угла NE.

Поэтому, если у вас есть пользовательский сервис данных, который возвращает точки JSON, вам нужно будет принять эти координаты в качестве входных данных и соответствующим образом скорректировать возвращенный набор данных (скорее всего, как предложение WHERE в вашем операторе SELECT).

У меня нет деталей запоминания этого ограничивающего прямоугольника, но для этого и нужны документы по API .

Автор: Peter Bailey Размещён: 29.04.2009 07:04

1 плюс

13999 Репутация автора

Да, я сделал что-то похожее в заявке для местного органа власти, где мы отображали объем, который каждый дом перерабатывал в 6000 нечетных домохозяйств. Поскольку общий объем данных (который включал в себя адрес и статистическую информацию для каждого домохозяйства) был довольно велик, откат всего файла данных за один раз вызвал зависание браузера.

Поэтому вместо вызова AJAX в базу данных мы отправили координаты ограничительного прямоугольника (широта, долгота) области карты, а затем вернули только те точки, которые мы видим. Из-за характера приложения пользовательская кнопка для «извлечения данных» была вполне приемлемой, но, очевидно, существует множество других вариантов, которые вы можете воспроизвести на этой теме - как только вы передадите ограничивающие координаты на стороне сервера, вы сможете решить, что делать. сделать там - например, вернуть только подмножество, если уровень масштабирования слишком высок. Вы должны быть в состоянии поймать событие рисования карты и действовать автоматически.

Автор: Cruachan Размещён: 29.04.2009 07:09

1 плюс

12708 Репутация автора

Когда масштаб изменяется, отправьте новый уровень масштабирования в службу JSON и верните маркеры, которые должны быть видны на этом уровне. Используйте addMarkers (), чтобы добавить результаты в MarkerManager и сделать их видимыми только при текущем уровне масштабирования.

Другие ответы здесь предлагают вернуть только маркеры в текущем представлении, но вы также можете просто вернуть все маркеры на этом уровне масштабирования. Это зависит от того, сколько вы знаете о том, какие маркеры вы хотите показать на каждом уровне.

Автор: Chris B Размещён: 29.04.2009 08:58

6 плюса

31911 Репутация автора

Существует новая библиотека под названием MarketClustered , которая поможет вам

альтернативный текст
(источник: googlecode.com )

Даже если данные слишком велики, я думаю, что лучше будет подать на карту все данные, и пусть это сделает свое дело.

Автор: Eduardo Molteni Размещён: 29.04.2009 09:14
Вопросы из категории :
32x32