В python вы можете сделать что-то вроде этого:
color = "green"
if color in ["red", "green", "blue"]:
print 'Yay'
Он называется оператором in
, который проверяет членство в наборе.
На вашем месте я бы попытался проверить документацию по обратному геокодеру в SDK 3.0. Я не могу сказать, что там, но вы можете, скажем, обнаружить, что обратный геокод возвращает placeMark, а затем, если вы посмотрите эту placeMark в SDK, вы можете обнаружить, что у него есть свойство почтового индекса. Кто знает?
Этот вид поиска называется «Обратное геолокация».
Первое, что вам нужно сделать, это преобразовать данные широты и долготы из объекта CLocation в градусы ...
в функция locationManager (которая вызывается после получения обновления местоположения) ....
Код:
[lat stringWithFormat:@"%+.6f", myLocation.coordinate.latitude];
[lng stringWithFormat:@"%+.6f", myLocation.coordinate.longitude];
Отсюда вы отправляете строки широты и долготы в серверную веб-службу, такую как «GeoNames.org» или API Карт Google. .. и вы можете узнать ближайший город или улицу.
Существует база данных, созданная в результате переписи населения США - база данных Tiger. Я считаю, что есть возможность найти почтовый индекс с учетом широты / долготы.
Готов поспорить, если вы искали почтовый индекс тигра , вы могли бы что-нибудь найти. см., например, здесь . Похоже, что на CPAN есть модуль Perl, который это делает, поэтому это не должно быть невозможным.
Я предполагаю, что когда вы говорите во всех тегах html, вы имеете в виду все одинарные кавычки, содержащие атрибут. Вы бы не хотели, чтобы
преобразовал b / c, это нарушило бы код.
Любое регулярное выражение будет хрупким. Если вы знаете, что ваш ввод будет конкретным набором простых случаев, вы можете быть в порядке с регулярным выражением . В противном случае вам понадобится парсер DOM, который понимает сложную разметку html, например onmouseover = "(function () {document.getElementById (''); alert (\" ... \ ") ...}) ( ) "
(например). Добавьте к этому атрибут, который может охватывать несколько строк. ;)
В последнее время мне не приходилось решать эту конкретную проблему, но, возможно, есть ' http://zips.sourceforge.net/
Распакованный файл - 500k. Вот несколько первых строк данных:
"35004", "AL", " 33.606379", " -86.50249", "Moody", "Alabama"
"35005", "AL", " 33.592585", " -86.95969", "Adamsville", "Alabama"
"35006", "AL", " 33.451714", " -87.23957", "Adger", "Alabama"
Выгрузите эти данные в локальную базу данных. Используйте формулу Хаверсина, чтобы сравнить свои координаты и координаты в базе данных, чтобы найти ближайшую точку. CoreLocation имеет функцию getDistanceFrom, которую вы тоже можете использовать.
- (CLLocationDistance)getDistanceFrom:(const CLLocation *)location
На этой странице есть функция Haversine в c и информация о базе данных zips.
http://www.jaimerios.com/?p=39
Edit : Вот отличное объяснение от Google о вычислении расстояний. Он использует MySQL и PHP, но здесь также полезен SQL для поиска ближайших точек. Вероятно, будет быстрее выполнять запросы с использованием SQL, а не функции getDistanceFrom.