Я разработал приложение, в котором оно отображает коллекцию маркеров на карте navteq. Когда я работал с navteq maps 2.2.3
, все работало нормально, но поскольку Navteq maps 2.2.3
не поддерживает Asynchronous behaviour
, я переключился на HereMaps 2.5.3
, который поддерживает поведение Asynchronous
.
Теперь, после перехода на последнюю версию, я столкнулся с одной странной проблемой. то есть при рендеринге маркеров на карте внезапно уже отрисованные точки/маркеры (некоторые точки) исчезают. Эта проблема возникает несколько раз, и если я снова попытаюсь создать маркеры на карте, все работает нормально.
поэтому я думаю, что мне нужно правильно обрабатывать некоторые события отображения перед рендерингом.
примеры изображений приведены ниже:
Изображение 1. Маркеры с правильной визуализацией
Изображение 2: отрендерено, но отсутствуют некоторые моменты
Мой код выглядит следующим образом:
нижеприведенная функция отвечает за отображение маркеров на карте.
function displayAllPoints(arrLightPointCoordinats, totalLightPoints, selectedSegmentId,
totalSegmentsCount, segmentColorcode)
{
var MyTheme1 = function () {
};
segmentColorcode = segmentColorcode.substring(2, segmentColorcode.length - 1);
MyTheme1.prototype.getNoisePresentation = function (dataPoint) {
var markerLightPoint = new nokia.maps.map.Marker(dataPoint, {
icon: new nokia.maps.gfx.BitmapImage("..//Images//Lightpoint//" + segmentColorcode + ".png"),
anchor: {
x: 12,
y: 12
}
});
return markerLightPoint;
};
MyTheme1.prototype.getClusterPresentation = function (data) {
var markerLightPoint = new nokia.maps.map.StandardMarker(data.getBounds().getCenter(), {
icon: new nokia.maps.gfx.BitmapImage("..//Images//SegmentController/" +
segmentColorcode + ".png", null, 66, 65),
text: data.getSize(),
zIndex: 2,
anchor: {
x: 12,
y: 12
}
});
return markerLightPoint;
};
var indexes = new nokia.maps.clustering.Index();
var lightpointsDataSet1 = new Array();
for (var i = 0; i < totalLightPoints; i++) {
lightpointsDataSet1[i] = { latitude: arrLightPointCoordinats[i][0],
longitude: arrLightPointCoordinats[i][1], title: 'LightPoint ' + (i + 1) };
indexes.add([arrLightPointCoordinats[i][0], arrLightPointCoordinats[i][1]]);
}
var ClusterProvider = nokia.maps.clustering.ClusterProvider,
theme = new MyTheme1(),
clusterProvider = new ClusterProvider(map, {
eps: 0.00000000001,
minPts: 1000000,
strategy: nokia.maps.clustering.ClusterProvider.STRATEGY_DENSITY_BASED,
index: indexes,
theme: theme,
dataPoints: []
});
clusterProvider.addAll(lightpointsDataSet1);
clusterProvider.cluster();
map.update(-1, 0);
//set zoom level here
setCenterAndZoom(13, arrSegmentControllerIds[0]);
}
Любая помощь будет принята с благодарностью.