function geocode_yahoo($code){
$app_id = '';
$code = str_replace(" ","+",$code);
$url ="http://local.yahooapis.com/MapsService/V1/geocode?appid=$app_id&zip=$code";
$xml=@file_get_contents($url);
preg_match('/<Latitude>(.*?)<\/Latitude>/',$xml,$matches);
$ll['lat']=$matches[1];
preg_match('/<Longitude>(.*?)<\/Longitude>/',$xml,$matches);
$ll['lng']=$matches[1];
return $ll;
}
вот функция, которая будет возвращать lat и long, я думаю, что вы будете работать над этим.
Зарегистрируйтесь на Yahoo для получения ключа API. и используйте эту функцию. использовал его в течение нескольких месяцев.
Есть странные случаи, когда геокодировки неверны, но это лишь случайный и самый простой способ выяснить, что они обычно за сотню миль (таким образом, длинные лат совершенно разные)
Мы также используем базу данных почтовых индексов AFD (введите почтовый индекс - получите все данные об адресе), в которой есть значения long, но только до 4 десятичных знаков (не очень точно)