2015-04-28 1 views
2

Я делаю 3d модель viwer в цезиях. Geojson запрашивается у URL-адреса, и он отлично работает для небольших моделей. Включение сложных json-файлов multipolygon и данных запроса json url превышает 16 мб цезий занимает так много времени при разборе, а затем рендеринг, и если я звоню на другую модель, это приводит к сбою веб-браузера с ошибкой из памяти. Я проверил хром по сторонам, и он ест около 900 памяти для 16 мэйл geojson из url. Есть ли лучший способ управления памятью? или какие-либо советы, как решить эту проблему. Одним из решений может быть упрощение 3d-сетки перед отправкой geojson для этой модели, но я задаю вопрос об управлении памятью на стороне клиента.Проблемы с управлением памятью цезияJS

ответ

0

Имейте в виду, что часть времени находится в браузере, работающем с JSON.parse, в файле размером 16 мегабайт. Это синхронная операция во всех браузерах, и никто не может с этим поделать, пока браузеры не будут использовать асинхронный анализ JSON. Первое, что я бы рекомендовал, - это запустить GeoJSON через TopoJSON на сервере, что должно обеспечить значительную экономию. Это уменьшит время передачи и время JSON.parse. Я также был бы уверен, что ваш сервер сжимает ваши данные, что добавит дополнительную экономию. Я видел, что файлы размером 16 Мбайт сменяются с помощью этих методов.

Это, как говорится, это только первая часть проблемы. Реальный вопрос не в том, насколько велика GeoJSON, но в том, как много функций у нее есть? Если это 16-мегабайтный файл с ~ 15000 функциями, то мое решение может решить вашу проблему. Если у него есть 10 тысяч функций, тогда вы столкнетесь с некоторыми проблемами, которые нелегко решить. Я действительно подробно рассказал об этом в нашем списке рассылки вчера: https://groups.google.com/d/msg/cesium-dev/F6IkY9aEG1I/8dRkhlBnLI4J

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

+1

Google Earth web api KML обрабатывает одни и те же данные очень плавно и никогда не исчерпывает память, так как земля Google умирает, поэтому нам нужно перейти на цезий, и да, это намного быстрее, чем плагин google earth web, требуется время для загрузки но когда данные загружаются более гладко, чем земля Google, но хорошая вещь в Google Earth заключалась в том, что я мог обрабатывать гораздо больше kml даже размером 96 МБ и многими другими такими файлами одновременно, но медленнее. Конечно, я буду участвовать в списке рассылки !! Спасибо, я изучу TopoJSON –

+0

, где я могу поделиться информацией о этой группе? –

+0

Google Earth - это родное приложение на C++ (для чего требуется плагин) и упрощает сбор больших наборов данных. Поскольку цезий - это чистый JavaScript, он делает хорошую работу намного сложнее. Не поймите меня неправильно, у Цезия есть много возможностей для оптимизации при загрузке, и мы доберемся туда, это гораздо более сложная проблема. –