ФорумПрограммированиеJavaScript → API vk getCities VS API cdek cities

API vk getCities VS API cdek cities

  • sweet15w

    Сообщения: 139 Репутация: N Группа: Кто попало

    Spritz 10 июля 2015 г. 18:27

    api vk:
    [api.vk.com]
    получаю список городов России (country_id = 1), в названии города которых содержится тюмень (q=%D0%A2%D1%8E%D0%BC%D0%B5%D0%BD%D1%8C)

    cdek cities
    [gw.edostavka.ru]
    выбор можно делать либо по почтовому индексу (http://gw.edostavka.ru:11443/pvzlist.php?citypostcode=625000)
    либо по id города (id cdek) [gw.edostavka.ru]

    надо определить есть ли терминал cdek в городе, выбранном из vk

    получаю значение города из вк (тюмень).. далее выбираю все данные из cdek и пытаюсь выбрать город

    
                    type: 'GET',
                    url: 'http://gw.edostavka.ru:11443/pvzlist.php',
                    dataType: 'xml',
    
                    success: function( result ) {
    
                        $( result ).find( 'Pvz[City="' + city + '"]' ).each( function() {
                            var code = $( this ).attr( 'Code' );
                            var name = $( this ).attr( 'Name' );
                            var city_code = $( this ).attr( 'CityCode' );
                            var city = $( this ).attr( 'City' );
                            var work_time = $( this ).attr( 'WorkTime' );
                            var address = $( this ).attr( 'Address' );
                            var phone = $( this ).attr( 'Phone' );
                            var note = $( this ).attr( 'Note' );
                            var coord_x = $( this ).attr( 'coordX' );
                            var coord_y = $( this ).attr( 'coordY' );
                            var weight_limit = $( this ).find( 'WeightLimit' ).attr( 'WeightLimit' );
                            var weight_min = $( this ).find( 'WeightLimit' ).attr( 'WeightMin' );
                            var weight_max = $( this ).find( 'WeightLimit' ).attr( 'WeightMax' );
    
                        } );
    
                    }
    

    когда в поле City в xml файле идет City="Тюмень" и город из вк (city='Тюмень').. то выборка происходит нормально..

    но если в xml City = 'Актау, Мангистауская обл' или 'Актобе, Казахстан' (с областью или страной..) то выборка не происходит..

    возникло несколько вопросов: есть ли возможность из вк вытянуть индекс города?
    есть ли какие то api которые возвращают индекс города по названию города?
    можно ли осуществить поиск в данном случае не учитывая что идет после искомого слова? (в строке "Актау, Мангистауская обл" учитывать только совпавший фрагмент в данной структуре $( result ).find( 'Pvz[City="' + city + '"]' ) )??
    возможно есть более толковая выборка из полученного xml?

    Спустя 118 сек.

    Есть ли api стран городов, в которых есть почтовый индекс?

  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 10 июля 2015 г. 18:37, спустя 9 минут 56 секунд

    @stasovsky ты должен помочь

    Спустя 6 сек.

    @technobulka или ты

    adw/0
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 10 июля 2015 г. 18:55, спустя 18 минут 6 секунд

    @technobulka up

    adw/0
  • sweet15w

    Сообщения: 139 Репутация: N Группа: Кто попало

    Spritz 11 июля 2015 г. 5:06, спустя 10 часов 10 минут 22 секунды

    вопрос по поводу поиска по фрагменту атрибута отпадает

    
    $( result ).find( 'Pvz[City *= "' + value + '"]' )
    

    Спустя 277 сек.

    Но рождается новы вопрос..

    в казахстане (например) в разных областях есть несколько городов под названием "Актобе" (api vk)
    в cdek есть пункт расположенный в актобе (хрен знает какая бласть)

    
    <Pvz Code="AKT1" Name="На Братьев Жубановых" CityCode="4693" City="Актобе, Казахстан" WorkTime="пн.-пт. 9-18, сб. 10-16" Address="БРАТЬЕВ ЖУБАНОВЫХ, д.272" Phone="8 (7132) 58 48 66" Note="" coordX="57.1464" coordY="50.2960"/>
    

    в голову приходит мысль использовать координаты, из них получать какие то данные... сравнивать с городом (областью, районом) из вк... и уже как то сопоставлять...

    у кого нибудь есть еще какие идеи?

  • sweet15w

    Сообщения: 139 Репутация: N Группа: Кто попало

    Spritz 11 июля 2015 г. 5:17, спустя 11 минут 6 секунд

    по координатам через гугл получается

    [maps.googleapis.com],57.1464&sensor=false&language=ru

    но тогда нужно ли мне промежуточное звено (vk) ??

  • sweet15w

    Сообщения: 139 Репутация: N Группа: Кто попало

    Spritz 11 июля 2015 г. 6:49, спустя 1 час 32 минуты 10 секунд

    [api.geonames.org]+%D0%A1%D0%B2%D0%B5%D1%80%D0%B4%D0%BB%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F+%D0%9D%D0%B8%D0%B6%D0%BD%D0%B5%D1%81%D0%B5%D1%80%D0%B3%D0%B8%D0%BD%D1%81%D0%BA%D0%B8%D0%B9&style=full&operator=AND

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

  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 12 июля 2015 г. 6:58, спустя 1 день 8 минут

    @sweet15w, мне кажется ты уже сам решил все свои вопросы) если не нужно промежуточное звено, то и не используй, что тут думать. Лишнее всегда хуже

    adw/0
  • sweet15w

    Сообщения: 139 Репутация: N Группа: Кто попало

    Spritz 13 июля 2015 г. 6:30, спустя 23 часа 32 минуты 23 секунды

    Короч запилил так:

    Выбор страны - You are using an outdated browser. [vk.com]
    Выбор города - http://vk.com/dev/database.getCities

    Геокодирование - [geocode-maps.yandex.ru] + СТРАНА,+ГОРОД,+ОБЛАСТЬ(если есть),+РАЙОН(если есть)
    Получаю - response.GeoObjectCollection.featureMember[0].GeoObject.Point.pos = [65.534328 57.153033]

    Дальше шаманство с позициями (отсечь до 1 знака после точки)
    function number_point_one( number ) {
    return Math.floor( number * 10 ) / 10;
    }

    Получаю пункты выдачи заказов сдэк - [gw.edostavka.ru]
    и выборку делаю по xml файлу - $( result ).find( 'Pvz[coordX *= "' + number_point_one( geo_position_x ) + '"][coordY *= "' + number_point_one( geo_position_y ) + '"]' )

  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 13 июля 2015 г. 7:01, спустя 31 минуту 9 секунд

    @sweet15w, в качестве справочника городов и улиц России используется обычно КЛАДР, у каждой страны он свой и придется собирать в интернетах.

    В качестве простого справочника страна-город можно ещё использовать базу MaxMind

    Но спасибо за твой опыт работы с VK, буду иметь ввиду

    adw/0
  • sweet15w

    Сообщения: 139 Репутация: N Группа: Кто попало

    Spritz 13 июля 2015 г. 7:13, спустя 11 минут 38 секунд

    только пришлось добавить в выборку из xml - ", Pvz[coordX *= "0.0000"][coordY *= "0.0000"][City *= "'+ city_value +'"]" т.к. в 4 городах координаты не указаны.. те я города просто по названию выбираю

  • sweet15w

    Сообщения: 139 Репутация: N Группа: Кто попало

    Spritz 15 июля 2015 г. 13:40, спустя 2 дня 6 часов 27 минут

    ахахах... ребята... это пздц... столько мучений... а ответ дали в техподдержке сдэк... (контакт нахуй послали)

    у сдэк, как оказалось, тоже нашлись базы городов (базы стран я не отыскал... но и хуй с ними..)

    [api.cdek.ru]

    причем.. в том описании что скинули мне в тех поддержке.. описан данный апи... а работает немножко по другому адресу http://api.cdek.ru/city/getListByTerm/jsonp.php?q=%D0%9D%D0%BE%D0%B2%D0%BE%D1%81&limit=5

    ну и соответственно в ajax dataType: 'jsonp'

    в результате чего мы получаем и названия городов и округов.. и айди города, который уже и можем использовать в xml пункте выдачи заказов и почтовый инкедкс...

    а дальше все просто либо

    [gw.edostavka.ru]

    либо

    [gw.edostavka.ru]

  • mathete

    Сообщения: 435 Репутация: N Группа: Джедаи

    Spritz 15 июля 2015 г. 17:17, спустя 3 часа 36 минут 51 секунду

    Конечно jsonp. Запрос-то кроссдоменный.

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