На самом сайте запустить сборщика инфы, который по сбору формирует скажем xml или json. А приложением забирать этот файл. Тогда отпадают проблемы с доступом к БД и прочее.
Вариант усовершенствований:
Если однотипные (по набору оказываемых услуг) товары сгруппированы по разделам инфоблока, заводим разделам пользовательское свойство типа "привязка к элементам инфоблока "Услуги"" — всё как у товаров. И там, где массово нужно применить услуги, заполняем свойство у раздела.
Дальше можно уже "на месте" регламентировать и варьировать. Например:
• "замещаем" — если у товара не установлено свойство, но установлено у раздела — берём из раздела (в обратную сторону звучит так: если установлено и у раздела и у товара, то свойства товара замещают свойства раздела — типа приоритет нижнего звена);
• "комбинируем" — берём свойства товара, а если установлено и у родителя — плюсуем ещё и родительские (при чём по уровню вложенности можно доходить до самого верха и накапливать список услуг).
Если нужно иметь возможность и замещать и комбинировать, вводим дополнительное свойство-флаг, который отвечает за "режим" конкретного узла — начиная от товара и заканчивая верхним родительским разделом.
Чем плохо (не непосредственно данное решение, а просто характерно для JQuery-ходов): даже когда уже все ссылки подсвечены, всё-равно продолжаются вычисления при скроллинге страницы.
VladimirBolotov: По ссылке пример. Как раз с инициализацией карты. Прям ваш случай. Полностью код подходит, только в примере "PROPERTY_YMAP_VALUE", а у вас "PROPERTY_MAP_VALUE"
Нужно "вверху", где строится список, накопить массив (например $city_phones) вида "ID" => 'Телефон', а там, где вывод телефона выводить его по идентификатору <?= $city_phones[ $_POST[ 'r' ] ]?>. А если ничего не выбрано, по-умолчанию идентификатор поставить равный коду "города по-умолчанию".