Цікава функція, але видає незрозумілу помилку
До повідомлення додав бібліотеки, їх в корінь Digitals потрібно вкинути.
Все одно щось не працює дана функція. Весь час повертає 0.
Я вже пробував по різних населених пунктах в різних регіонах України. По кожному задавав датуми у властивостях карти. Все одно результат 0.
От, для прикладу, по Київській області прикріпив файл, по якому пробував формувати.
І, за одно, інше питання. Чи планується в майбутньому аналогічна функція по інших картах, крім Яндекса? Зокрема, цікавить OpenStreetMap та Google,
Noname4.dmf (18.8 KB)
Скоріш за все скрипт “роздільникозалежний”.
Спробуйте цей. Має бути файл Digitals\Library\ReplaceComma.dsf
$Datum=@Map.Datum
@if $Datum= then @Break Задайте датум карты
$SelL=@Map.Selected.List
@Text[1].Text $SelL
$LC=@Text[1].Count
@if $LC=0 then @Break Нет помеченных объектов
$I=0
@Progress.Start $LC Загрузка
%Loop
$I=$I+1
$MON=@Text[1].Line[$I]
$XYZ=@Map.Object[$MON].Centroid
$X=@StringPart 1 $XYZ
$Y=@StringPart 2 $XYZ
$X=%Library.ReplaceComma $X
$Y=%Library.ReplaceComma $Y
$S=@Map.GetYandexMapInfo $X $Y
$S=@UTF8ToString $S
@if $S=0 then @Goto %Next
@Text[2].Text $S
$LC2=@Text[2].Count
$J=1
%Loop2
$J=$J+1
$S=@Text[2].Line[$J]
$ParamName=@StringPart 1=$S
$ParamVal=@StringPart 2=$S
$LID=@Map.Object[$MON].Layer
$P=@Map.Parameters.FindByName $ParamName
@if $P<>0 then @Goto %Continue
$P=@Map.Parameters.Add 757500$J 5 $ParamName
%Continue
$VP=@Map.Layers.GetValidParameters $LID
@Map.Layers.SetValidParameters $LID $VP $P
@Map.Object[$MON].Parameter[$P] $ParamVal
@if $J<$LC2 then @goto %Loop2
%Next
$Canceled=@Progress.Canceled
@if $Canceled=1 then @Break
@Progress.StepBy
@if $I<$LC then @Goto %Loop
@Progress.Stop
@Window.Refresh
і все одно не працює, повертає завжди значення 0
і параметри не створюються
Відгукніться, в когось ще дана функція не працює/працює?
Хоча, я пробував вже на різних комп’ютерах
На Windows 10, лише коли libeay32.dll і libssl32.dll закинув у System32 отримав повідомлення Ordinal Not Found:
Думаю ще вказану бібліотеку треба. Попередні дві працюють без реєстрації в системі?
P.s. Бібліотеку ssleay32.dll скачав - помилка Ordinal Not Found пропала, але функція повертає 0.
Додайте в скрипт: першу строку @OpenLog, останню строку @CloseLog c:\log.txt
Запустіть скрипт.
Надішліть c:\log.txt на help@vingeo.com або викладіть цей файл тут.
Щоправда розділювач дробової частини приводиться до системного, а не до крапки.
Але ж скрипт:
$S=@MAP.GETYANDEXMAPINFO 5581295.854 3371425.560
@Break $S
також видає 0.
P.s. Після зміни системного розділювача в налаштуванні системи з коми на крапку - запрацювали і скрипт, і вказана команда. Правда заповнюються лише параметри province і country, хоча об’єкт з центром на будівлі з номером в карті Yandex.
Функція повертає:
7
province=Київ
province=Київська область
country=Україна
Log.txt (3.21 KB)
Так, щось в Києві адреса не така як потрібно, немає SubAdministrativeArea. Як ви там без нього живете? ![]()
Але, виходить причина в системному десятковому розділювачі?


дійсно, змінив системний розділювач з коми на крапку і запрацювало. Видно, крапка потрібна десь ще, окрім власне скрипту, для тих же бібліотек, можливо?
П.С. Прикольна функція , тепер навіть вулицю і номер будинку не треба вводити, все автоматично ![]()
Не думаю, що розробники залишать обов’язковою умовою роботи функції: системний розділювач - крапка. Ймовірно справа у перерахунку координат у тілі скриптової функції (обов’язково крапка), але далі Yandex оперує з системним розділювачем. Скоріш за все бібліотекам всеодно: крапка чи кома, а якщо не всеодно - то використовують вони системний розділювач.
В новій версії позбавляємось від “роздільникозалежності”. Також корректно відпрацьовується м. Київ.
Можливі проблеми зі з’єднанням через проксі поки не відтворені, тому і не виправлені. Через пряме з’єднання має працювати.
Жалко що змінили назви вулиць, а в яндексі старі назви(((
