Если вы хотите сделать это, не полагаясь на услугу, вы загружаете шейп-файлы TIGER из переписи населения США.
Вы ищите интересующую вас улицу, которая будет иметь несколько сегментов. Каждый сегмент будет иметь начальный адрес и конечный адрес, и вы будете интерполировать вдоль сегмента, чтобы найти, где в сегменте лежит номер вашего дома.
Это даст вам пару lon / lat.
Имейте в виду, однако, что онлайн-сервисы используют много проверок и исправлений адресов, которые вам также придется дублировать, чтобы получить хорошие результаты.
Также обратите внимание, что, несмотря на то, что бесплатные данные хороши, они не идеальны - там нет последних улиц (они могут быть в данных, которые использует Google), и улицы могут в некоторой степени отклоняться от своего реального местоположения в неточности обследования. Но для 98% потребностей в геокодировании она работает отлично, бесплатна, и вы контролируете все, что сокращает зависимости в вашем приложении.
Целью Openstreetmaps является картирование всего в мире, хотя они не совсем там, но стоит следить за тем, как они предоставляют свои данные по лицензии CC
Тем не менее, во многих (большинстве?) Других странах отображаются только правительства или услуги, за которые вам нужно заплатить плату. Если вам не нужно геокодировать слишком много данных, то может быть достаточно использовать Google, Yahoo или другие бесплатные всемирные картографические сервисы.
Если вам нужно геокодировать много данных, то вам лучше всего будет взять в аренду данные карты у крупного поставщика, такого как телеатлас.
-Adam