Geocoder\Provider\MaxMindBinary::geocode PHP Method

geocode() public method

{@inheritDoc}
public geocode ( $address )
    public function geocode($address)
    {
        if (false === filter_var($address, FILTER_VALIDATE_IP)) {
            throw new UnsupportedOperation('The MaxMindBinary provider does not support street addresses.');
        }
        // This API does not support IPv6
        if (filter_var($address, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
            throw new UnsupportedOperation('The MaxMindBinary provider does not support IPv6 addresses.');
        }
        $geoIp = geoip_open($this->datFile, $this->openFlag);
        $geoIpRecord = GeoIP_record_by_addr($geoIp, $address);
        geoip_close($geoIp);
        if (false === $geoIpRecord instanceof \GeoIpRecord) {
            throw new NoResult(sprintf('No results found for IP address %s', $address));
        }
        $adminLevels = [];
        if ($geoIpRecord->region) {
            $adminLevels[] = ['name' => $geoIpRecord->region, 'level' => 1];
        }
        return $this->returnResults([$this->fixEncoding(array_merge($this->getDefaults(), ['countryCode' => $geoIpRecord->country_code, 'country' => $geoIpRecord->country_name, 'adminLevels' => $adminLevels, 'locality' => $geoIpRecord->city, 'latitude' => $geoIpRecord->latitude, 'longitude' => $geoIpRecord->longitude]))]);
    }

Usage Example

Esempio n. 1
0
 /**
  * @expectedException \Geocoder\Exception\UnsupportedOperation
  * @expectedExceptionMessage The MaxMindBinary provider does not support street addresses.
  */
 public function testThrowIfInvalidIpAddressGiven()
 {
     $provider = new MaxMindBinary($this->binaryFile);
     $provider->geocode('invalidIp');
 }