Добрый день.
На главной странице выбирается несколько пунктов (локаций) и при переходе на страницу panel.php передается туда массив (1,2,3,5,10) из этих локаций. В panel.php размещен скрипт карты Яндекс. Пример:
var myMap,
geoObjects,
objectManager,
arr_id = '".$arr_id."',
arrp = JSON.parse('[' + arr_id + ']');
ymaps.ready(init);
function init()
{
myMap = new ymaps.Map('map', {
center: [".$last_gps."],
zoom: 14,
type: 'yandex#satellite'
}, {
searchControlProvider: 'yandex#search'
});
objectManager = new ymaps.ObjectManager({
clusterize: true,
gridSize: 32,
clusterDisableClickZoom: true
});
objectManager.objects.options.set('preset', 'islands#grayDotIcon');
objectManager.clusters.options.set('preset', 'islands#grayClusterIcons');
myMap.geoObjects.add(objectManager);
$.ajax({
url:'panel_json.php',
type: 'post',
dataType: 'json',
data: {arrp:arrp}
}).done(function(data) {
objectManager.add(data);
});
myMap.geoObjects.add(objectManager);
};
Через ajax передается массив id в panel_json.php, где по этому массиву идет запрос к БД, после чего формируется шаблон в формате json и возвращается в panel.php.
Суть в том, что каждые 5 секунд данные на карте обновляются через setInterval(). Если получать данные для карты из panel_json.php, то данные возвращаются долго - примерно 1-2 сек. Если получать данные из json-файла
url:'json/data.json'
, то работает намного быстрее ~5-10 ms. Но проблема в том, каким образом сохранять и получать файл json? Т.е. допустим, на сайт пришли несколько пользователей и каждый выбрал какие-то локации для отображения. Получается, в каждом случае будет передаваться какой-то отдельный массив с различными id, и для каждого нужно будет формировать отдельный набор json и сохранять в какой-то отдельный файл. Итого, большая куча сгенерированных файлов на серваке.
Может, кто-то сталкивался с подобным? Быть может, есть еще какие-то решения.