Google Reverse-Geocode - Posta kodu alın

0 Cevap php

Burada farklı bileşenleri alıyorum nasıl benim geçerli kod.

function getGeocodeFull($address)
{
    if (empty($address)) return false;

    $_geocode = false; 

    if (($_geocode = $this->getCache($address)) === false) // check if address is has a cache
    {
        if (($results = $this->geoGetCoordsFull($address)) !== false) 
        {
            // sloooooooooopppy.. yes these can all be combined, i know.
            if (!isset($results->results[0]->geometry->location->lat))  return false;
            if (!isset($results->results[0]->geometry->location->lat))  return false;
            if (!isset($results->results[0]->formatted_address))        return false;
            if (!isset($results->results[0]->address_components))       return false;

            $_geocode['lat']     = $results->results[0]->geometry->location->lat;
            $_geocode['lon']     = $results->results[0]->geometry->location->lng;
            $_geocode['address'] = $results->results[0]->formatted_address;

            foreach ($results->results[0]->address_components as $component)
            {
                if (isset($component->types))
                {
                    foreach ($component->types as $type)
                    {
                        switch ($type)
                        {
                            case 'route':
                                $_geocode['street'] = $component->long_name;
                                break;
                            case 'locality':
                                $_geocode['city'] = $component->long_name;
                                break;
                            case 'administrative_area_level_2':
                                $_geocode['county'] = $component->long_name;
                                break;
                            case 'administrative_area_level_3':
                                $_geocode['area'] = $component->long_name;
                                break;
                            case 'postal_code':
                                $_geocode['zip'] = $component->short_name;
                                break;
                        }     
                    }
                }    
            }

            $this->putCacheFull($address, $_geocode['lat'], $_geocode['lon'], $_geocode['address'], $_geocode['street'], $_geocode['city'], $_geocode['county'], $_geocode['area'], $_geocode['zip']);
        }
    }

    return $_geocode;
}

geoGetCoordsFull () basitçe, google harita API geocode sayfada file_get_contents kullanır sonra bunları döndürür sonra sonuçları çözer.

Ben neye benzediğini bir fan çok büyük değilim. Çok tutarsız olabilir gibi görünüyor. Tüm google verileri veya diğer herhangi bir hizmet almak için başka daha iyi çözümler var mı?

Ben istekleri sınırı (ya da bu tür bing / yahoo / etc gibi birden geocode hizmetlerini kullanmak yasaktır) değil başka bir hizmeti tercih ediyorum? (Başka bir soru atma için özür dilerim)

Neyse, çok yardım çok takdir!

0 Cevap