mapx2
День добрый сообщество…, возникла задача вывести карты в различных табах… вот ссылка для наглядности… ntgr.org/kontaktyi, табы и содержимое их работает норм за исключением тех самых карт… все карты выводятся в первом ресурсе, вывод контента ресурсов осуществляется вот так…
в чанках "tabKontAcTpl, tabKontTpl", вызывается сам сниппет карты.
подскажите кто что знает, заранее благодарен!
<div class="tab-content">
[[!pdoResources?
&tplFirst=`tabKontAcTpl`
&tpl=`tabKontTpl`
&limit=`0`
&parents=`4`
&sortdir=`ASC`
&processTVs=`1`
&includeTVs=`adres,mapx,rec,agenti`
]]
</div>
в чанках "tabKontAcTpl, tabKontTpl", вызывается сам сниппет карты.
[[!mapexDrawMap? &map=`[[+tv.mapx]]`]]
куда копать я не знаю, есть догадка, что нужно допилить сниппет до такого вида, то есть выводить карты текущего ресурса…[[!mapexDrawMap? &map=`[[+tv.mapx]]` &id=`[[+id]`]]
как добавить параметр &id=`[[+id]]` я тоже не знаю, возможно и догадка моя не верна…подскажите кто что знает, заранее благодарен!
Комментарии: 4
Возможно Вам поможет параметр &mapId для выводы разных карт в разных контейнерах. Пишите туда id ресурса (или что-то другое, чтобы различалось).
спасибо за наводку, все оказалось просто &mapid=`x[[+id]]`
1. Можно сделать табы сделать на ajax-е (https://modx.pro/development/3139-foundations-of-ajax/) — проблема будет решена де-факто.
2. Глубоко не смотрел, но подозреваю, что дело в якоре Id=«mapexMap». Не знаю точной работы вашего сниппета карт, но, судя по куску:
— который вызывается у вас 26 раз, то сниппет при помощи скрипта вставляет в контейнер с айди mapexMap модуль карты, но т.к. в html параметр id должен быть уникальным, то из-за специфики javascript'a он находит первое совпадение Id (первый контейнер) и вставляет туда результат. И так 26 раз.
2. Глубоко не смотрел, но подозреваю, что дело в якоре Id=«mapexMap». Не знаю точной работы вашего сниппета карт, но, судя по куску:
<script type="text/javascript">
ymaps.ready(function(){
mapexMap = new ymaps.Map("mapexMap", {
center: [57.886209618522,59.999624185547],
zoom: 11
});
mapexMap.setType("yandex#map");
var mapexMapControls = "mapTools".split(',');
for(var i = 0; i < mapexMapControls.length; i++){
mapexMap.controls.add(mapexMapControls[i]);
}
mapexMap.geoObjects.add(new ymaps.Placemark([57.920845758766,60.103013093254], {"iconContent":"\u0412\u0430\u0433\u043e\u043d\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u0435\u0439 12","balloonContentBody":"","balloonContentHeader":"\u0412\u0430\u0433\u043e\u043d\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u0435\u0439 12"}, {"preset":"twirl#blueStretchyIcon"}));
mapexMap.geoObjects.add(new ymaps.Placemark([57.872675912701,59.95150535582], {"iconContent":"\u041e\u043a\u0442\u044f\u0431\u0440\u044c\u0441\u043a\u0438\u0439 \u043f\u0440. 22","balloonContentBody":"","balloonContentHeader":"\u041e\u043a\u0442\u044f\u0431\u0440\u044c\u0441\u043a\u0438\u0439 \u043f\u0440. 22"}, {"preset":"twirl#blueStretchyIcon"}));
});
</script>
— который вызывается у вас 26 раз, то сниппет при помощи скрипта вставляет в контейнер с айди mapexMap модуль карты, но т.к. в html параметр id должен быть уникальным, то из-за специфики javascript'a он находит первое совпадение Id (первый контейнер) и вставляет туда результат. И так 26 раз.
Все верно вам написали. Еще посмотрите что бы яндекс карты много раз не подключались, за это отвечает параметр includeJs www.createit.ru/blog/modx/2012/mapex-2-0-yandex-maps-for-modx-revolution/
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.