Альтернативы нет. Либо CIBlockElement::Update либо прямой запрос. Прямой запрос лучше не использовать. По поводу времени выполнения это уже отдельная тема. Там много чего может быть. От настроек БД, до чудных обработчиков событий.
А попробуйте посмотреть что в Services через браузерное расширение Vue Devtools. Для того чтобы оно заработала в init.php добавьте define('VUEJS_DEBUG', true);
Авторизуйтесь на сайте как админ. Зайдите на страницу там где у вас карта выведена. Далее вверху в административной панели включите режим редактирования. После этого страница обновится. Потом наведите мышкой на область с картой. Должна появится рамка с шестеренкой в углу. Эта шестеренка и будет настройками компонента.
При переходе на эту страницу должен отдаваться json с параметрами фильтра. Делайте var_dump а после die последовательно по телу страницы. Так дойдёте до того места, где код отваливается.
Откройте консоль браузера F12. Там на вкладке Network смотрите ajax запросы после выбора каких то параметров в форме умного фильтра. Если страница быстро перезагружается, то добавьте в js фильтра debugger. У меня это метод JCSmartFilter.prototype.postHandler
Так тут вопросы задают и не предлагают готовое решение под Ваш проект. Если есть трудности с реализацией конкретного способа, то задавайте вопросы. Но даже не попытавшись сделать задачу, спрашивать готовый вариант - это на фриланс надо идти.
Не надо передавать ВСЁ содержимое $arResult. Вы же спросили про id, вот его и передавайте.
Для BX.ajax или $.ajax в параметр data нужно передать данные которые Вы собираетесь передавать на backend. Если не понятно, то перейдите по ссылкам. Там есть примеры того, как правильно передавать параметры.