Пользовательская виртуальная кластеризация Земли - PullRequest
1 голос
/ 03 ноября 2008

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

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

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

Ответы [ 2 ]

1 голос
/ 08 ноября 2008

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

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

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

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

1 голос
/ 03 ноября 2008

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

...