Браузер Google Maps очень медленный и вылетает при загрузке очень больших данных с маркерами

Я создаю приложение для отслеживания на основе GPS, и идея состоит в том, чтобы показать общий маршрут транспортного средства за последние 24 часа с данными, поступающими в среднем каждые полминуты.

Наряду с этими данными существуют всевозможные ориентиры, маркеры маршрутов, различные цветовые коды, основанные на различных условиях транспортного средства в пути, различные изображения на маршрутах, основанные на разных углах, которые GPS-устройство отправляет данные.

Имея все это в виду, данные очень велики и содержат много логики и условий.

Мы загружаем карту Google, создавая XML и визуализируя карту в виде слоев и помещая другие цветные значки.

Загрузка маркеров из файла XML в Google Map API является основой реализации. Мы ajax обновляем карту каждые 3 секунды и размещаем полный xml со слоями.

Проблемы:

  1. Карта со значками и изображениями дергается каждый раз, когда делаются вызовы ajax, и ощущения автоматического обновления карты не происходит.
  2. Когда на карте присутствует огромное количество данных, приложение становится очень медленным, и браузер несколько раз аварийно завершает работу.

Нужна помощь:

  1. Является ли загрузка XML наиболее оптимизированным способом загрузки карт?
  2. Есть ли другие лучшие варианты - пожалуйста, предложите
  3. Многие форумы указывают на https://developers.google.com/maps/documentation/javascript/kmllayer Это подход, который нужно принять

person user2055396    schedule 27.03.2015    source источник
comment
решение помогло? Или вы пробовали что-то еще?   -  person Ankit Aggarwal    schedule 27.04.2015


Ответы (1)


Я думаю, вам нужно сделать некоторую оптимизацию отображения ваших данных. Метод XML хорош, проблема в том, что у вас их слишком много.

Первое, что вы можете сделать, это использовать метод getBounds() в google.maps.Map. class и отображать только те маркеры, которые находятся в поле зрения пользователя. Это похоже на то, зачем рисовать 10 000 данных, когда пользователь может видеть только 10 из них?
Вам также следует прослушать bounds_changed событие, чтобы обновить ваш взгляд соответственно.

Во-вторых, вы совершенно не хотите показывать все маркеры, даже когда пользователь смотрит на большую область, это не только медленно, но и ужасно.
введите здесь описание изображения
Вместо этого вы должны сгруппировать свои данные, как это делала функция группировки по области в приложении "Фотографии" для iOS.
введите здесь описание изображения

Также перерабатывайте свои маркеры, а не удаляйте и создавайте.

person kaho    schedule 27.03.2015
comment
Я не думаю, что частичное отображение будет работать в моем случае, потому что требование клиента состоит в том, чтобы интеллектуально масштабировать карту, используя широту и длину, чтобы весь маршрут, пройденный транспортным средством, отображался с использованием map.fitBounds(bounds); для достижения масштаба Любая идея о KLM и его преимущества / недостатки - я смотрю на developers.google.com/kml/articles/phpmysqlkml и googlegeodevelopers.blogspot .in/2010/05/ - person user2055396; 27.03.2015
comment
понял подход, но не создаст ли он каких-то рывков при снятии и добавлении точек. Моя карта отслеживает в реальном времени, есть различные типы маркеров скорости, остановки геозоны и т. д. Что вы имеете в виду под переработкой карт, а не удалением и созданием, не могли бы вы объяснить эту часть, пожалуйста. Я верю xyzzyb.tumblr.com/ post/10317033064/ - это подход, о котором вы говорите. У вас есть лучший или более оптимизированный подход? - person user2055396; 28.03.2015
comment
@ user2055396: Помогло ли вам это решение? Что ты наконец сделал? - person Ankit Aggarwal; 27.04.2015
comment
Я восстановил подход XML и getbounds и загрузил частичные точки, а не все точки - person user2055396; 09.07.2015