OpenLayers2. Как лучше нанести на карту 10000 полигонов?
Добавлено: 16 июл 2016, 16:51
Добрый день. Сразу скажу, что скриптёр я ещё тот, так что не судите строго. С документацией у openlayers2 дела обстоят как то не очень или я просто не умею читать буржуйскую документацию. В основном ковыряю чужие примеры. Ну да не суть.
Задача у меня такая: необходимо с сервера отображать данные метеолокатора. Каждый локатор имеет 10000 квадратиков, т.е. матрицу 100х100. Координаты для каждого квадратика постоянны (4х4км), я их рассчитаю и буду передавать как константы. У каждого квадратика должно быть два свойства - цвет (число от 0 до 32) и высота (число от 0 до 13000). Т.е. при запросе серверу передаётся номер локатора, а сервер отправляет в ответ массив, в котором каждый из 10000 элементов содержит 4 координаты углов, цвет и высоту.
Я пробовал рассчитывать координаты углов в браузере чтобы уменьшить ответ сервера, но получается даже медленнее, чем загрузить готовые. Подгрузка данных с готовыми координатами получается порядка двух мегабайт, но сие работает в локалке, т.е. всё относительно быстро. И если нанести все 10000 квадратиков на карту, то это ещё терпимо, а если прикрутить к каждому квадратику евент, который при наведении на квадратик должен показывать хинт с цифрой высоты и цвета, то браузер начинает существенно лагать. А если таких локаторов нанести 3-4, то браузер сначала виснет на минуту-другую, а также при попытке сдвинуть/смаштабировать карту каждый раз подвисает секунд на 30.
Так вот есть ли какой то предел у опенлейерса? 10000 полигонов с ховером - это много для него? или я что-то неправильно делаю?
Посоветуйте, пожалуйста, как лучше подгружать и отображать столько данных и как оптимальнее сделать ховер на квадратиках?
Задача у меня такая: необходимо с сервера отображать данные метеолокатора. Каждый локатор имеет 10000 квадратиков, т.е. матрицу 100х100. Координаты для каждого квадратика постоянны (4х4км), я их рассчитаю и буду передавать как константы. У каждого квадратика должно быть два свойства - цвет (число от 0 до 32) и высота (число от 0 до 13000). Т.е. при запросе серверу передаётся номер локатора, а сервер отправляет в ответ массив, в котором каждый из 10000 элементов содержит 4 координаты углов, цвет и высоту.
Я пробовал рассчитывать координаты углов в браузере чтобы уменьшить ответ сервера, но получается даже медленнее, чем загрузить готовые. Подгрузка данных с готовыми координатами получается порядка двух мегабайт, но сие работает в локалке, т.е. всё относительно быстро. И если нанести все 10000 квадратиков на карту, то это ещё терпимо, а если прикрутить к каждому квадратику евент, который при наведении на квадратик должен показывать хинт с цифрой высоты и цвета, то браузер начинает существенно лагать. А если таких локаторов нанести 3-4, то браузер сначала виснет на минуту-другую, а также при попытке сдвинуть/смаштабировать карту каждый раз подвисает секунд на 30.
Так вот есть ли какой то предел у опенлейерса? 10000 полигонов с ховером - это много для него? или я что-то неправильно делаю?
Посоветуйте, пожалуйста, как лучше подгружать и отображать столько данных и как оптимальнее сделать ховер на квадратиках?