Дмитрий Кондин

Обновление system 3.5.15 (распознавание адреса)

Recommended Posts

Ладно. У меня нет такого знания как у вас. Вам виднее

Извините.

Но в ручную не думаю, что пользователи сообразят сами править и начнутся ошибки

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На мой взгляд, логичнее было бы СНТ в городах относить к районам города, по сути это часть территории города, и улицы в СНТ будут на месте.

Например: 

Тюменская область - Тюменский район - Тюмень - СНТ Царево - Березовая улица - д.1

(область - район - город - район города - улица - дом)

Но логика не всегда уживается с реальностью...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Chernetskiy сказал:

На мой взгляд, логичнее было бы СНТ в городах относить к районам города, по сути это часть территории города, и улицы в СНТ будут на месте.

Например: 

Тюменская область - Тюменский район - Тюмень - СНТ Царево - Березовая улица - д.1

(область - район - город - район города - улица - дом)

Но логика не всегда уживается с реальностью...

Вот именно. Сторонние сайты этого не примут и не поймут

Да и карта тоже вряд ли

?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вещь бесспорно интересная

Но.....

Всё же сыровато

Деревни то правильно в города попадают.

Подумайте пожалуйста как реализовать, что бы при вводе дачного общества, город попадал в поле города а дачи в поле улицы

Заранее спасибо!

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, banzai72 сказал:

Вещь бесспорно интересная

Но.....

Всё же сыровато

Деревни то правильно в города попадают.

Подумайте пожалуйста как реализовать, что бы при вводе дачного общества, город попадал в поле города а дачи в поле улицы

Заранее спасибо!

 

Поскольку в разных регионах ситуация с СНТ, ГСК, КП и т.п. выглядит по разному, да и организационно-правовые наименования у них часто отличаются, а еще и намечаются изменения, то наверное есть смысл сделать обработчик и вывести это в настройки чекбоксом, чтобы админ мог сделать свой выбор куда парсить эти территории - в справочник населенных пунктов или в справочник улиц.

А еще лучше вместо чекбокса в настройках сделать позицию, где админ сможет сам указать возможные по местности варианты наименований "СНТ", "садовое товарищество", "территория", "тер.", "садоводство", "СДТ" и т.п., что собственно будет определяться обработчиком и результат соответствия будет автоматически перемещаться в населенные пункты или в улицы. Может быть сделать даже 2 таких позиции, из одной соответствия будут перемещаться в населенные пункты, из другой - в улицы. Кто знает, как оно будет в перспективе...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
7 часов назад, Chernetskiy сказал:

Поскольку в разных регионах ситуация с СНТ, ГСК, КП и т.п. выглядит по разному, да и организационно-правовые наименования у них часто отличаются, а еще и намечаются изменения, то наверное есть смысл сделать обработчик и вывести это в настройки чекбоксом, чтобы админ мог сделать свой выбор куда парсить эти территории - в справочник населенных пунктов или в справочник улиц.

А еще лучше вместо чекбокса в настройках сделать позицию, где админ сможет сам указать возможные по местности варианты наименований "СНТ", "садовое товарищество", "территория", "тер.", "садоводство", "СДТ" и т.п., что собственно будет определяться обработчиком и результат соответствия будет автоматически перемещаться в населенные пункты или в улицы. Может быть сделать даже 2 таких позиции, из одной соответствия будут перемещаться в населенные пункты, из другой - в улицы. Кто знает, как оно будет в перспективе...

Сейчас реализована функция кастомизации скрипта раскидывания по полям из адреса.

Берем скрипт

/apps/system/js/dadata/dadata.js

Копируем сюда

/template/frontend/ВАШ_ШАБЛОН/js/dadata/dadata.js

И кастомизируем функции разбора географии.

Например со своими районам

function showCity(address) {
    //console.log(address);
    if (address.settlement_with_type !== null) {
        $("input[name='geoautocomplete[city_id]']").val(address.settlement_with_type);
    } else {
        $("input[name='geoautocomplete[city_id]']").val(join([
            join([address.city], " ")
        ]));
    }
    if (address.area !== null) {
        $("input[name='geoautocomplete[raion_id]']").val(address.area);
    }
    
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, banzai72 сказал:

Куда пропадает город?

Ну выше же написал.

Вместо города логика подбирает ДНТ Малинка, поскольку dadata говорит что это населенный пункт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Меня пока устраивают связанные элементы с заранее загруженными и связанными между собой справочниками. Сделал 1 раз изначально и не заморачиваюсь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

после установки "Автоматическое распознавание адресов" проблема с поисковой формой на сайте http://benua.org

еще вопрос : возможно ли использовать поле "адрес" в frontend в качестве поиска объектов ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
5 часов назад, Dmitrii сказал:

после установки "Автоматическое распознавание адресов" проблема с поисковой формой на сайте http://benua.org

еще вопрос : возможно ли использовать поле "адрес" в frontend в качестве поиска объектов ?

Поделитесь секретом. как вы сняли обязательность полей при отправки сообщения?

 

1.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
15 часов назад, Dmitrii сказал:

после установки "Автоматическое распознавание адресов" проблема с поисковой формой на сайте http://benua.org

еще вопрос : возможно ли использовать поле "адрес" в frontend в качестве поиска объектов ?

Проблема видимо в том что выбор городов и улиц теперь не списком?

Это особенность ввода адреса через этот плагин, чтобы и форма поиска осталась как прежде и ввод адреса работал, нужно будет немного доработать алгоритм формы поиска, напишите согласуем.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 26.06.2018 в 23:07, banzai72 сказал:

Поделитесь секретом. как вы сняли обязательность полей при отправки сообщения?

 

1.jpg

поля обязательные, вероятно баг в шаблоне.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Жаль, что забросили. Идея была хорошая.

Жаль, что при написании дачного общества, само дачное общество в черте города кидает в ГОРОД (Населенный пункт) а сам город просто игнорирует и никуда не вписывает 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я так понимаю изменения нужно вносить здесь? public_html/template/frontend/real-spaces/js/dadata

Только не понимаю как. 

Попробовал, не получилось)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 02.06.2018 в 14:46, Chernetskiy сказал:

На мой взгляд, логичнее было бы СНТ в городах относить к районам города, по сути это часть территории города, и улицы в СНТ будут на месте.

Например: 

Тюменская область - Тюменский район - Тюмень - СНТ Царево - Березовая улица - д.1

(область - район - город - район города - улица - дом)

Но логика не всегда уживается с реальностью...

Есть еще микрорайоны. В dadata явно не хватает еще одного поля!

(область - район - город - (район города или микрорайон или СНТ) - улица - дом)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

С ГОРОДОМ И ЗАГОРОДОМ ВСЁ ВЕРНО СДЕЛАНО. С ДАЧНЫМИ ОБЩЕСТВАМИ ЗА ГОРОДОМ ТОЖЕ ВСЁ ХОРОШО

А ВОТ С ДАЧНЫМИ ОБЩЕСТВАМИ В ЧЕРТЕ ГОРОДА НЕ ВЕРНО

ДАЧНОЕ ОБЩЕСТВО, КОТОРОЕ НАХОДИТЬСЯ В ЧЕРТЕ ГОРОДА НУЖНО ПРИРАВНИВАТЬ К УЛИЦЕ

НЕ ВЕРНО ТОЛЬКО С ПУНКТАМИ 4 И 5

 

ВСЁ ВЕРНО:

1) Деревня 

Тюменская обл, Тюменский р-н, село Луговое

Тюменская обл - Область (region_id)

Тюменский р-н - Район области (raion_id)

село Луговое - Населенный пункт (city_id)

 

2) Деревня с улицей

Тюменская обл, Тюменский р-н, село Луговое, ул Александровская

Тюменская обл - Область (region_id)

Тюменский р-н - Район области (raion_id)

село Луговое - Населенный пункт (city_id)

ул Александровская - Улица / Местоположение (street_id)

____________________________________________________________________________________________

3) Город с улицей и домом

Тюменская обл, г Тюмень, ул Мельникайте, д 100

Тюменская обл - Область (region_id)

г Тюмень - Населенный пункт (city_id)

ул Мельникайте - Улица / Местоположение (street_id)

д 100 - Номер дома / здания (number)

___________________________________________________________________________________________________

 

ДОЛЖНО БЫТЬ:

 

4) Садовое общество в городе

Тюменская обл, г Тюмень, тер. СНТ Энергостроитель

Тюменская обл - Область (region_id)

г Тюмень - Населенный пункт (city_id)

тер. СНТ Энергостроитель - Улица / Местоположение (street_id)

 

5) Садовое общество в городе с улицей

Тюменская обл, г Тюмень, тер. СНТ Энергостроитель, ул Главная

Тюменская обл - Область (region_id)

г Тюмень - Населенный пункт (city_id)

тер. СНТ Энергостроитель, ул Главная - Улица / Местоположение (street_id)

 

 

Сейчас всё как надо с одной оговоркой

Проблема с дачными обществами в черте города

 область, город, улица И область, город, дачное общество должно быть одинаково

 

А сейчас область, город, улица правильно, а область, город, дача не верно

Сейчас дача встает на место города, а город просто удаляется в никуда

____________________________________________________________________________________________________________________________________

Должно быть:

4) Садовое общество в городе

Тюменская обл, г Тюмень, тер. СНТ Энергостроитель

Тюменская обл - Область (region_id)

г Тюмень - Населенный пункт (city_id)

тер. СНТ Энергостроитель - Улица / Местоположение (street_id)

Куда то пропадает значение города(просто исчезает

 

А к сожалению сейчас вот так:

Тюменская обл, г Тюмень, тер. СНТ Энергостроитель

Тюменская обл - Область (region_id)

тер. СНТ Энергостроитель - Населенный пункт (city_id)

ПУСТО - Улица / Местоположение (street_id)

 

А г Тюмень просто исчезло

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У себя сделал такую структуру:

Страна/регион (область)/Административный район/город (населенный пункт)/улица/номер дома

В административный район пишутся областные районы и города (город как отдельное муниципальное образование)

В города пишутся все населенные пункты и города

У нас в составе городов есть населенные пункты которые к району области не относятся, например:

Россия/Амурская область/Благовещенск/город Благовещенск/улица/дом;

или

Россия/Амурская область/Благовещенск/село Белогорье/улица/дом;

или

Россия/Амурская область/Благовещенский район/село Чигири/улица/дом;

или

Россия/Амурская область/Завитинский район/город Завитинск/улица/дом;

Всего нашел четыре разных варианта, под них и переделал dadata.js что бы раскидывал адреса правильно,

Получилось это: http://avtoritet28.ru/add/

В dadata.js корявенько, не программист я , прошу тапками не кидать, если что не так скажите.

function showRegion(address) {
    $("input[name='geoautocomplete[region_id]']").val(address.region_with_type);
    $("input[name='geoautocomplete[area_id]']").val(address.area_with_type);
}


function showCity(address) {
    //console.log(address);
    if (address.city !== null)
    if (address.settlement !== null) 
    {
        $("input[name='geoautocomplete[city_id]']").val(address.settlement_with_type);
        $("input[name='geoautocomplete[area_id]']").val(address.city);
    }
    if (address.area !== null)
    if (address.settlement !== null)
    { 
        $("input[name='geoautocomplete[city_id]']").val(address.settlement_with_type);
    }
    if (address.area === null)
    if (address.city !== null)
    if (address.settlement === null)
    {
        $("input[name='geoautocomplete[area_id]']").val(address.city);
        $("input[name='geoautocomplete[city_id]']").val(address.city_with_type);    
    }
    if (address.area !== null)
    if (address.city !== null)
    {
        $("input[name='geoautocomplete[city_id]']").val(address.city_with_type);
    }
    }
function showDistrict(address) {
    $("input[name='geoautocomplete[district_id]']").val(
            join([address.city_district], " ")
            );
}

function showStreet(address) {
    $("input[name='geoautocomplete[street_id]']").val(
            join([address.street], " ")
            );
}


function showHouse(address) {
    //console.log(address);
    $("input[name='number']").val(join([
        join([address.house], " "),
        join([address.block_type, address.block], " ")
    ]));
}

 

 

 

Снимок1.JPG

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, Олег Колесниченко сказал:

У себя сделал такую структуру:

Страна/регион (область)/Административный район/город (населенный пункт)/улица/номер дома

В административный район пишутся областные районы и города (город как отдельное муниципальное образование)

В города пишутся все населенные пункты и города

У нас в составе городов есть населенные пункты которые к району области не относятся, например:

Россия/Амурская область/Благовещенск/город Благовещенск/улица/дом;

или

Россия/Амурская область/Благовещенск/село Белогорье/улица/дом;

или

Россия/Амурская область/Благовещенский район/село Чигири/улица/дом;

или

Россия/Амурская область/Завитинский район/город Завитинск/улица/дом;

Всего нашел четыре разных варианта, под них и переделал dadata.js что бы раскидывал адреса правильно,

Получилось это: http://avtoritet28.ru/add/

В dadata.js корявенько, не программист я , прошу тапками не кидать, если что не так скажите.

function showRegion(address) {
    $("input[name='geoautocomplete[region_id]']").val(address.region_with_type);
    $("input[name='geoautocomplete[area_id]']").val(address.area_with_type);
}


function showCity(address) {
    //console.log(address);
    if (address.city !== null)
    if (address.settlement !== null) 
    {
        $("input[name='geoautocomplete[city_id]']").val(address.settlement_with_type);
        $("input[name='geoautocomplete[area_id]']").val(address.city);
    }
    if (address.area !== null)
    if (address.settlement !== null)
    { 
        $("input[name='geoautocomplete[city_id]']").val(address.settlement_with_type);
    }
    if (address.area === null)
    if (address.city !== null)
    if (address.settlement === null)
    {
        $("input[name='geoautocomplete[area_id]']").val(address.city);
        $("input[name='geoautocomplete[city_id]']").val(address.city_with_type);    
    }
    if (address.area !== null)
    if (address.city !== null)
    {
        $("input[name='geoautocomplete[city_id]']").val(address.city_with_type);
    }
    }
function showDistrict(address) {
    $("input[name='geoautocomplete[district_id]']").val(
            join([address.city_district], " ")
            );
}

function showStreet(address) {
    $("input[name='geoautocomplete[street_id]']").val(
            join([address.street], " ")
            );
}


function showHouse(address) {
    //console.log(address);
    $("input[name='number']").val(join([
        join([address.house], " "),
        join([address.block_type, address.block], " ")
    ]));
}

 

 

 

Снимок1.JPG

а если город разбит на районы?

(область - район - город - (район города или микрорайон или СНТ) - улица - дом)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас