Управление VEShape кластерного Pushpin в VE SDK 6.2
Предисловие
Я использую недавно выпущенный Microsoft Virtual Earth SDK v6.2, который имеет встроенную поддержку кластеризации меток. Я понимаю, что существуют нестандартные способы кластеризации, на которые легко ответить на мой вопрос, но я бы хотел максимально использовать встроенную поддержку, поэтому этот вопрос конкретно связан с использованием функции кластеризации в VE 6.2 SDK.,
Эта проблема
После включения встроенной кластеризации (через VEShapeLayer.SetClusteringConfiguration) кластеры создаются, как и ожидалось, однако в них есть информация по умолчанию, которая говорит что-то вроде "X элементов, расположенных здесь - увеличьте масштаб, чтобы увидеть детали". В приложении, над которым я работаю, мне нужно отобразить больше информации - мне нужно либо разрешить пользователю нажимать на кнопку, и VE автоматически увеличит масштаб, так что точки теперь различны, ИЛИ отобразить названия точек в информационном блоке, прикрепленном к кнопке кластера. Подвох заключается в том, что форма кластера, которую создает для меня VE, кажется не редактируемой до тех пор, пока не запустится вся логика кластеризации... в этот момент я не знаю, какие исходные кнопки принадлежат этому конкретному кластеру. Есть ли способ сделать это, не прибегая к созданию собственной реализации кластеризации?
2 ответа
В случае, если у других есть такая же проблема, ответ был только что опубликован на форуме MSDN для VE:
Мы делаем точно, что я думаю, что вы просите... Попробуйте это
// Create your map
var MapCtl = new VEMap('MapContainer');
// Create a layer for your pins
MapPinLayer = new VEShapeLayer();
// Add a callback that gets called every time the cluster config changes
var clusteringOptions = new VEClusteringOptions();
clusteringOptions.Callback = clusterCallback;
MapPinLayer.SetClusteringConfiguration(VEClusteringType.Grid, clusteringOptions);
// your cluster callback method
function clusterCallback(clusters) {
for (var i = 0; i < clusters.length; ++i) {
var cluster = clusters[i];
var clusterShape = cluster.GetClusterShape();
var clusterSize = cluster.Shapes.length;
clusterShape.SetTitle('Some Title');
clusterShape.SetDescription('There's ' + clusterSize + ' shops in this area');
}
}