Клуб API Карт

Список населенных пунктов региона

Пост в архиве.

Доброго времени суток!

Как можно получить список населенных пунктов заданного региона?

Сейчас использую такой код

 

// Загрузка регионов

YMaps.Regions.load("ru", function (state, collection) {

    if (state == YMaps.State.SUCCESS) {

        // Добавляет коллекцию регионов на карту

        map.addOverlay(collection);

        var RegionEventListener = YMaps.Events.observe(collection, collection.Events.Click, function (collection, region, mEvent) {

            if (confirm('Сканировать регион "' + region.name + '"?')) {

                RegionEventListener.cleanup();

                map.removeOverlay(collection);

                //region.setOptions({highlightRegion: false});

                map.addOverlay(region);

                // ЗДЕСЬ НУЖНО ПОЛУЧАТЬ СПИСОК НАСЕЛЕННЫХ ПУНКТОВ

            };

        }, this);

    }

});

 

8 комментариев

Через АПИ это сделать не получится.

Алексей У.
28 января 2016, 01:30

Хм... в новом API столько вкусностей, а такой востребованный функционал не реализован - очень странно.
Может есть какие-то другие подходы для решения данной задачи? Напр. перебор геобъектов, попадающих в заданный полигон и/или т.п.? Какие вообще есть методы/интерфейсы для работы с населенными пунктами? - что-то ничего подходящего не нашел.
----
Про КЛАДР знаю, но мне еще надо потом посчитать маршруты между городами - неужели придется "приплетать" еще и КЛАДР, для решения такой тривиальной (на первый взгляд) задачи? 

У нас картографическое АПИ. Оно про карты.

Даже геокодер - на самом внешний для нас сервис.

Узнать список городов в какой либо регионе можно через "апи" кладра - на прошлой неделе на хабре их пару чтук презентовали. Но там вроде без координат.

Но геокодировать данные не так чтобы долго.

Алексей У.
28 января 2016, 01:30

Да, так-то да. Уже наваял: http://yadi.sk/d/fZaRoDt68o7Le
Формат вызова:
site.ru/GetCitiesByRegion.php?region=Красноярск

или

site.ru/GetCitiesByRegion.php?region=Красноярский

Лучше передавать именно название региона, поскольку название региона не всегда "правильно" образуется от названия столицы региона. Напр. город Пенза, а область ПензЕнская и т.д.

Возвращает список населенных пунктов региона в JSON и сведения о найденом регионе.
----
Жаль, конечно, что не получилось решить мою задачу полностью средствами Яндекс.Карт и еще придется повозиться с геокодингом, но что поделаешь (
Очень бы хотелось увидеть подобный функционал в новых версиях API. 
---
З.Ы. Забыл упомянуть, что используется это КЛАДР-API (нужные файлы уже есть в архиве, но обратите внимание, что используются демо-ключи).

Текстовый match чтука плохая.

Получить все населенные пункты региона это (уж прости) жопа. Деревеньки сильно мешаются. 

"Нормальных" адресов по России вроде бы ~8,531

Не долго думая - вот дамп таблички - http://yadi.sk/d/79qi2GEX8oSWz . Есть и более подробный вариант, с postindex.esosedi, но это вроде overpower будет.

PS: переходите на второе АПИ - там модуль регионы сильно круче.

Алексей У.
28 января 2016, 01:30

Геокодинг не шибко помог - удалось получить координаты максимум 20% населенных пунктов. Немного дополнил за счет, выложенной выше базы (там есть поле KLADR_id), но незначительно.

Деревеньки сильно мешаются

Мне без них никуда - деревеньки тоже нужны.

Есть и более подробный вариант, с postindex.esosedi, но это вроде overpower будет.

Не, overpower не будет - мне чем больше, тем лучше.
Выложите, плиз, будет Вам большой респект )
З.Ы. Второе апи - действительно круто. А GeoQueryResult просто сказка )
 

Алексей У.
28 января 2016, 01:30

Если у кого есть базы населенных пунктов с координатами, запостите в теме, плиз - очень поможете.

есть. 170 000 н.п., все регионы Рф,  координаты, размеры и т.д.
источник issa.ru/distance