Api яндекс карт, интеграция 1с и Js. Прошу помощи в исправлении бага

1. dima_medvedev_12 12.01.21 16:33 Сейчас в теме
Привет! Есть самописная конфигурация, предназначенная для работы с картами яндекс. Реализовано все через яндекс апи. Сама карта выводится в поле хтмл документа.

Основной код, который отрабатывает действия по карте и получает из нее информацию написан на java script и размещен в общих макетах 1с.
Суть работы с картами сводится к следующему - алгоритм должен определить принадлежность точки, выставленной на карте к одной из областей, которые заданы по координатам в специальном справочнике

Весь функционал уже реализован до меня, но отвалилась способность алгоритма определять принадлежность точки заданным областям. Адрес точки на карте он находит, выводит, но сопоставить не может.

По итогу штудирования кода пришел к конкретной функции JS - searchContaining, в которой есть проблема. Код этой процедуры привожу ниже.

В коде ниже происходит следующее - в глобальную переменную Zones (в функции updateZones) пишется JSON, который поступает при вызове этой функции из 1с. JSON заполнен координатами по стандарту, проверял в отладчике. Далее в функции searchContaining создается массив, в который должны записаться названия областей(?!), которые должны содержаться в 'description'. Все это нужно, чтобы потом сказать - точка принадлежит области с таким-то названием из 'description'.

Так вот этот 'description' раньше все прекрасно возвращал и месяцев 6-7 назад функционал работал. А потом работать перестало, и параметр с названиями областей, возвращаемый в 1с стал равен "неопределено"

Подскажите, пожалуйста, что могло произойти, от чего 'description' перестал существовать? Или как возможно такое, что JSON и 'description' существуют, но JSON заполнен, а в 'description' он не передается?

var Zones,
returnParametr;
function updateZones(GeoJsonArr)
{
if (typeof(GeoJsonArr)=="string")
{
GeoJsonArr = JSON.parse(GeoJsonArr);
};

Zones = ymaps.geoQuery(GeoJsonArr);
}

function searchContaining(point)
{
// Находим полигон, в который входят переданные координаты.
arr = [];

Zones.addToMap(myMap);
Zones.searchContaining(point).each(function (obj)
{
arr.push(obj.properties.get('description'));
});
Zones.removeFromMap(myMap);

returnParametr= JSON.stringify(arr);
}
+
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. AlexeyIsip 26 13.01.21 07:18 Сейчас в теме
Не сильно знаком с java script. Но думаю, проблема Zones = ymaps.geoQuery(GeoJsonArr);
Или function (obj). В функции obj что там?
Думаю первый шаг запустить JavaScript в отладчике, например в Chrome. (сохрани функции в файл с расширением js.
https://learn.javascript.ru/debugging-chrome
вместо переменных из 1С занести вручную данные в массив.
GeoJsonArr = JSON.parse(сюда вставить как текст);
Что в GeoJsonArr из 1С прилетает?
+
3. AlexeyIsip 26 13.01.21 07:26 Сейчас в теме
В целом скорее всего причина, что передается из 1С какой-то неправильный объект, типа последовательно добавляют 4 узла, к примеру получают квадрат, а пятым узлом делят верхнюю сторону и уводят координаты этого узла ниже нижней линии в итоге область поиска не определена.
+
4. AlexeyIsip 26 13.01.21 07:29 Сейчас в теме
5. AlexeyIsip 26 13.01.21 08:19 Сейчас в теме
В песочнице можно функции проверить https://yandex точка ru/dev/maps/jsbox/2.1/
+
6. AlexeyIsip 26 13.01.21 08:27 Сейчас в теме
на сайте yandex точка ru/dev/maps/jsbox/2.1/geoobject_events/ можно отладиться
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот