/*
Function to get cluster data.
For cubeplan milano purposes
*/
{Set default params}
if iconAggregate="" Then iconAggregate:="Max";
if labelAggregate="" Then labelAggregate:="Sum";
var paramGeoKey:= nodeId + '-' + labelField + '-' + labelAggregate + '-' + sizeField + '-' + sizeAggregate + '-' + colorField + '-' + colorAggregate + '-' + iconField + '-' + iconAggregate;
var geoKey := evaluateScript('geoKey of ' & nodeid);
if geoKey="" or isnull(geoKey) or findInText('Syntax error',geoKey) or geoKey<>paramGeoKey then cub_removeCluster(nodeid);
{Get or generate id for new node}
var geoId := evaluateScript('geoTag of ' & nodeid);
if geoId="" or isnull(geoid) or findInText('Syntax error',geoid) then cub_clusterize(nodeid, indexId, attributeIndex , latField , lonField , labelField , labelaggregate, sizefield, sizeaggregate, colorField, coloraggregate,iconField, iconAggregate);
geoId := evaluateScript('geoTag of ' & nodeid);
if geoId<>"" and not isnull(geoid) and not findInText('Syntax error',geoid) then
(
evaluateScript("geoKey of " & nodeid & " := " & paramGeoKey & " " );
var geoIds := splitText(geoId,",");
var geoNodeId := slice( geoIds, zoomLevel);
var clusterResult := HandleFromIdentifier(geoNodeId);
var deltaX := Round( zoomtable[Zoom = zoomLevel, geocoords ="Longitude"] ,6);
var deltaY := Round( zoomtable[Zoom = zoomLevel, geocoords ="Latitude"] ,6);
viewportMinLat := viewportMinLat - deltaY;
viewportMaxLat := viewportMaxLat + deltaY;
viewportMinLon := viewportMinLon - deltaX;
viewportMaxLon := viewportMaxLon + deltaX;
index viewportFilter := subset( clusterResult[ clusterResult.aggregators ='AvgLat'] >= viewportMinLat AND
clusterResult[ clusterResult.aggregators ='AvgLat'] <= viewportMaxLat AND
clusterResult[ clusterResult.aggregators ='AvgLon'] >= viewportMinLon AND
clusterResult[ clusterResult.aggregators ='AvgLon'] <= viewportMaxLon);
var filteredResult := clusterResult[clusterResult.mapcell = viewportFilter];
filteredResult;
);