2008-11-02 2 views
1

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

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

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

ответ

1

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

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

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

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

1

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

Смежные вопросы