Клуб API Карт

Хранение центра карты и зума в куки

kr-aleksandr
15 января 2013, 15:46

Страница с картой генерируется на PHP.

Как сделать так, чтобы центр карты и зум брались из куки, где бы автоматически обновлялось текущее значение при использовании карты?

4 комментария
Подписаться на комментарии к посту
Для работы с куками можно их парсить самому, либо использовать, например, jquery плагин (вроде https://github.com/carhartl/jquery-cookie), тогда:

1. при событии boundschange пишете в куки зум и центр.

map.events.add('boundschange', function (e) {
    $.cookie("center", e.get('newCenter'));
    $.cookie("zoom", e.get('newZoom'));
}, this);

2. при инициализации карты просто проверяете, есть ли в куках значения. Можно сделать это и в php и в js. В js будет как-то так:

var myCenter = $.cookie("center") != null ? $.cookie("center").split(',') :  [37, 55],
      myZoom = $.cookie("zoom") || 12;

var map = new ymaps.Map("mapContainer", {
     center: myCenter,
     zoom: myZoom 
})

Как то оно странно работает, вот посмотрите http://kraleksandr.dlinkddns.com

Да, верно. Карта должна принимать в качестве центра числа. Нужно так:

var myCenter,
    myZoom = $.cookie("zoom") && parseInt($.cookie("zoom")) || 12;
if ($.cookie("center")) {
    myCenter = $.cookie("center").split(',');
    myCenter = [parseFloat(myCenter[0]), parseFloat(myCenter[1])];
} else {
    myCenter = [55, 37];
}

Теперь все хорошо, да?

Спасибо.