Пользовательская виртуальная кластеризация Земли

Я хочу реализовать свой собственный алгоритм кластеризации с использованием этого API JavaScript Virtual Earth: http://msdn.microsoft.com/en-us/library/cc966716.aspx Однако, механизм VE вызывает мою функцию кластера один раз для каждой фигуры в слое, Это делает это очень медленно! Мне кажется, что VE должен поместить все фигуры в слой, а затем попросить мою функцию сгруппировать их. Не неоднократно вызывать кластер!

Почему двигатель VE делает это? Есть ли другой способ сделать кластеризацию на стороне клиента с этим API?

Дополнительная информация: я загружаю фигуры из канала GeoRSS.

2 ответа

Решение

Пользовательский метод алгоритма кластеризации будет вызываться только один раз для этого VEShapeLayer.

Адам Байрам, нет большой разницы между использованием метода VEMap.AddShape и добавлением VEShapeLayer на карту со всеми фигурами внутри. Метод AddShape добавляет Shape к ShapeLayer "по умолчанию", который является ShapeLayer с индексом 0 (ноль), а добавление VEShapeLayer добавляет новый слой в дополнение к существующему слою "default".

Вероятно, если вы используете VEMap.AddShape для добавления объекта VEShape на карту, то он вызывает ваш алгоритм алгоритма clusting каждый раз, когда VEShape добавляется на карту. Это было бы правильным поведением, поскольку при каждом добавлении фигуры потребуется пересчитывать кластеризацию.

Повысить общую производительность при добавлении всех фигур на карту и заставить VE вызывать метод пользовательского алгоритма только один раз при добавлении всех фигур; Вы можете создать VEShapeLayer, добавить все фигуры к нему, а затем добавить этот слой формы на карту. Это приведет к тому, что VE будет выполнять рендеринг всех фигур только один раз (во время их загрузки), а не каждый раз, когда вы добавляете один VEShape.

Он должен вызывать ваш код только один раз для VEShapeLayer - в противном случае кластеризация не имеет смысла, так как вы не можете кластеризовать одну фигуру. Используете ли вы VEMap. AddShape вместо добавления объектов VEShape в VEShapeLayer? Если это так, попробуйте создать один VEShapeLayer, добавить его в VEMap, а затем добавить все объекты VEShape в слой формы вместо карты.

Другие вопросы по тегам