2012-07-03 1 views
5

Так что я использую API-интерфейс GeoNames, чтобы получить информацию о стране и штате/провинции, которую я использую, чтобы заполнить выпадающие списки в форме. Эта форма передает информацию в веб-службу SOAP, и SOAP-сервер понимает только данные страны и штата/провинции в 2-х бланках. то есть. CA для Канады, США для США. API GeoNames предоставляет эту информацию для разных стран, но не для их детей (штатов/провинций).получить 2-х буквенное состояние/провинцию аббревиатура

Кто-нибудь знает, как получить 2-буквенную аббревиатуру для состояния/провинции/территории от GeoNames или есть ли другой API, который я могу попробовать?

ответ

1

Я не знаком с GeoNames API, но это, кажется, что вы получаете коды альфа-2 страны ISO-3166: http://www.iso.org/iso/country_codes.htm

Если это так, ISO 3166-2: 2007 определяет штаты и провинцию. На приведенной выше странице описано, как приобрести информацию в базе данных и других форматах.

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

+0

Возможно, вы правы, мне не нужно использовать веб-службу для этого. –

2

В соответствии с @ user640118 аббревиатуры государства не меняются часто, если вообще когда-либо, в Северной Америке. Было бы лучше всего иметь статический список кодов или сокращений.

Чтобы ответить на ваш вопрос, я работал над одним из таких веб-сервисов под названием LiveAddress, который предоставляет гео-почтовые данные через простую конечную точку REST. Это немного более продвинуто, хотя в том смысле, что он принимает адрес, частично или полностью, и полностью заполняет его, проверяет и стандартизирует его. Вы можете обнаружить, что это важно для удаления дубликатов и геокодирования данных ваших пользователей.

Если у вас есть адрес, вы можете использовать this wrapper function как так, в Javascript:

LiveAddress.verify("123 main st 12345", function(results) { 
    console.log(results); 
}); 

Пример выходных данных можно найти в API документации.

1

Geonames предоставляет 2-х аббревиатуры для стран, но только для государств в нескольких странах.

Почему они не предоставляют что-то стандартное (и полезное), поскольку это вне меня.