/**
  * Get more detailed geocode from OSM
  */
 function geocode()
 {
     $geocode = $this->geocodeString();
     // Do not geocode twice
     $geocoded = $this->geocodeKey();
     if ($this->geocoded == $geocoded) {
         return true;
     } else {
         $geocoder = new \Geocoder\Geocoder();
         $adapter = new \Geocoder\HttpAdapter\CurlHttpAdapter();
         $geocoder->registerProviders(array(new \Geocoder\Provider\OpenStreetMapProvider($adapter)));
         try {
             $geotools = new \League\Geotools\Geotools();
             $cache = new \League\Geotools\Cache\MongoDB();
             $results = $geotools->batch($geocoder)->setCache($cache)->geocode([$geocode])->parallel();
         } catch (Exception $ex) {
             return false;
         }
         if (count($results) > 0) {
             if ($results[0]->getExceptionMessage()) {
                 return false;
             } else {
                 $this->lat = $results[0]->getLatitude();
                 $this->lng = $results[0]->getLongitude();
                 $this->geosource = 'OSM';
                 $this->geocoded = $geocoded;
                 return true;
             }
         } else {
             return false;
         }
     }
 }
Exemple #2
0
 public function createService(ServiceLocatorInterface $createService)
 {
     $locale = 'en';
     $geocoder = new \Geocoder\Geocoder();
     $adapter = new \Geocoder\HttpAdapter\CurlHttpAdapter();
     $geocoder->registerProviders(array(new \Geocoder\Provider\NominatimProvider($adapter, 'http://nominatim.openstreetmap.org', $locale)));
     return $geocoder;
 }
Exemple #3
0
 public function fromIp($ip)
 {
     $geocoder = new \Geocoder\Geocoder();
     $adapter = new \Geocoder\HttpAdapter\CurlHttpAdapter();
     $chain = new \Geocoder\Provider\ChainProvider(array(new \Geocoder\Provider\FreeGeoIpProvider($adapter), new \Geocoder\Provider\HostIpProvider($adapter)));
     $geocoder->registerProvider($chain);
     return $geocoder->geocode($ip);
 }
Exemple #4
0
function get_location()
{
    $geocoder = new \Geocoder\Geocoder();
    $adapter = new \Geocoder\HttpAdapter\CurlHttpAdapter();
    $chain = new \Geocoder\Provider\ChainProvider(array(new \Geocoder\Provider\FreeGeoIpProvider($adapter), new \Geocoder\Provider\HostIpProvider($adapter), new \Geocoder\Provider\GoogleMapsProvider($adapter, 'en_US', 'USA', true), new \Geocoder\Provider\BingMapsProvider($adapter, '<API_KEY>')));
    $geocoder->registerProvider($chain);
    $result = $geocoder->geocode($_SERVER["REMOTE_ADDR"]);
    $dumper = new \Geocoder\Dumper\GeoJsonDumper();
    $geo_ar = $dumper->dump($result);
    return json_decode($geo_ar, true);
}
 /**
  * Get the configured geocoder.
  * Configures freegeoip, hostip, and googlemaps providers by default.
  * @return \Geocoder\Geocoder Geocoder
  */
 public static function get_geocoder()
 {
     if (self::$inst) {
         return self::$inst;
     }
     $geocoder = new \Geocoder\Geocoder();
     $adapter = new \Geocoder\HttpAdapter\CurlHttpAdapter();
     $chain = new \Geocoder\Provider\ChainProvider(array(new \Geocoder\Provider\HostIpProvider($adapter), new \Geocoder\Provider\GoogleMapsProvider($adapter)));
     $geocoder->registerProvider($chain);
     return self::$inst = $geocoder;
 }
Exemple #6
0
 private function geocoder($path)
 {
     global $geocoder;
     if (!mapi_include_abs_path($path, 'lib')) {
         return null;
     }
     $adapter = new \Geocoder\HttpAdapter\CurlHttpAdapter();
     $chain = new \Geocoder\Provider\ChainProvider(array(new \Geocoder\Provider\NominatimProvider($adapter, 'nominatim.openstreetmap.org', 'en-GB'), new \Geocoder\Provider\GoogleMapsProvider($adapter)));
     $geocoder = new \Geocoder\Geocoder();
     $geocoder->registerProvider($chain);
     return true;
 }
Exemple #7
0
 public function generateAction($address, $info_bulle = '', $width = '100%', $height = '100%')
 {
     $geocoder = new \Geocoder\Geocoder();
     $adapter = new \Geocoder\HttpAdapter\CurlHttpAdapter();
     $chain = new \Geocoder\Provider\ChainProvider(array(new \Geocoder\Provider\FreeGeoIpProvider($adapter), new \Geocoder\Provider\HostIpProvider($adapter), new \Geocoder\Provider\GoogleMapsProvider($adapter, 'fr_FR', 'France', true), new \Geocoder\Provider\BingMapsProvider($adapter, 'AIzaSyBZ3sNuoMPrXGCNbhnEbGmfzGxOohhEX4E')));
     $geocoder->registerProvider($chain);
     $address = urldecode($address);
     $info_bulle = urldecode($info_bulle);
     // Récupération des coordonnées du programme
     try {
         $coordonnees = $geocoder->geocode($address);
     } catch (ChainNoResultException $e) {
         try {
             $coordonnees = $geocoder->geocode('France');
         } catch (ChainNoResultException $e) {
             return false;
         }
     }
     $info_content = '<div style="min-width:150px;text-align:center;">' . $info_bulle . '</div>';
     $info_window = new InfoWindow();
     $info_window->setAutoOpen(true);
     $info_window->setOpen(true);
     $info_window->setContent($info_content);
     $marker = new Marker();
     $marker->setPosition($coordonnees->getLatitude(), $coordonnees->getLongitude(), true);
     $marker->setAnimation('drop');
     $marker->setOption('clickable', true);
     $marker->setOption('flat', true);
     if ($info_bulle) {
         $marker->setInfoWindow($info_window);
     }
     // Création de la map
     $map = new Map();
     $map->setPrefixJavascriptVariable('map_');
     $map->setHtmlContainerId('map_canvas');
     $map->setAsync(true);
     $map->setAutoZoom(false);
     $map->setCenter($coordonnees->getLatitude(), $coordonnees->getLongitude(), true);
     $map->setMapOption('zoom', 12);
     $map->setMapOption('mapTypeId', MapTypeId::ROADMAP);
     $map->setMapOption('disableDefaultUI', false);
     $map->setMapOption('disableDoubleClickZoom', false);
     $map->setStylesheetOption('width', $width);
     $map->setStylesheetOption('height', $height);
     $map->setLanguage('fr');
     $map->addMarker($marker);
     return $map;
 }
<?php

require 'vendor/autoload.php';
/**
 * Use Openstreetmap API to extract lng & lat for each belgian city
 *
 * @author Jean-Francois Monfort <*****@*****.**>
 */
$file = "zipcodes_num_fr.csv";
$new_file = "zipcode-belgium.csv";
$new_file_json = "zipcode-belgium.json";
$export = array();
if (($handle = fopen($file, "r")) !== FALSE) {
    $fp = fopen($new_file, 'w');
    $geocoder = new \Geocoder\Geocoder();
    $adapter = new \Geocoder\HttpAdapter\CurlHttpAdapter();
    $chain = new \Geocoder\Provider\ChainProvider(array(new \Geocoder\Provider\OpenStreetMapProvider($adapter, 'be')));
    $geocoder->registerProvider($chain);
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        if ($data[2] == "") {
            continue;
        }
        try {
            $addr = $data[0] . ' ' . $data[1] . ' Belgium';
            $geocode = $geocoder->geocode($addr);
            $row = array("zip" => $data[0], "city" => mb_convert_case($data[1], MB_CASE_TITLE, "UTF-8"), "lng" => $geocode->getLongitude(), "lat" => $geocode->getLatitude());
            $export[] = $row;
            fputcsv($fp, $row);
        } catch (\Exception $e) {
            echo $e->getMessage();
        }
Exemple #9
0
 /**
  * Get the address (reverse locate)
  *
  * @param   array  $coordinates  array(latitude, longitude)
  * @return  array
  */
 public static function address($coordinates)
 {
     $adapter = new \Geocoder\HttpAdapter\CurlHttpAdapter();
     $p = array();
     // Get a list of providers
     if ($providers = \Event::trigger('geocode.onGeocodeProvider', array('geocode.address', $adapter))) {
         foreach ($providers as $provider) {
             if ($provider) {
                 $p[] = $provider;
             }
         }
     }
     if (!count($p)) {
         return '';
     }
     $latitude = isset($coordinates['latitude']) ? $coordinates['latitude'] : $coordinates[0];
     $longitude = isset($coordinates['longitude']) ? $coordinates['longitude'] : $coordinates[1];
     // Instantiate the Geocoder service and pass it the list of providers
     $geocoder = new \Geocoder\Geocoder();
     $geocoder->registerProvider(new \Geocoder\Provider\ChainProvider($p));
     // Try to get some data...
     return $geocoder->reverse($latitude, $longitude);
 }
Exemple #10
0
<?php

require 'vendor/autoload.php';
// Setup geocoder.
$adapter = new \Geocoder\HttpAdapter\CurlHttpAdapter();
$chain = new \Geocoder\Provider\ChainProvider(array(new \Geocoder\Provider\GoogleMapsProvider($adapter)));
$geocoder = new \Geocoder\Geocoder();
$geocoder->registerProvider($chain);
// Demo locations
$locations = array(array('address' => '3324 N California Ave, Chicago, IL, 60618', 'title' => 'Hot Dougs'), array('address' => '11 S White, Frankfort, IL, 60423', 'title' => 'Museum'), array('address' => '1000 Sterling Ave, , Flossmoor, IL, 60422', 'title' => 'Library'), array('address' => '2053 Ridge Rd, Homewood, IL, 60430', 'title' => 'Twisted Q'));
$mapdata = $marker_group = array();
foreach ($locations as $key => $value) {
    // Try to geocode.
    try {
        $geocode = $geocoder->geocode($value['address']);
        $longitude = $geocode->getLongitude();
        $latitude = $geocode->getLatitude();
        // Create map data array
        $mapdata[] = markerCreator($latitude, $longitude, $value['title'], $key);
        // Marker grouping array
        $marker_group[] = "marker{$key}";
    } catch (Exception $e) {
        echo $e->getMessage();
    }
}
function markerCreator($lat, $long, $label, $key)
{
    return "var marker{$key} = L.marker([{$lat}, {$long}]).addTo(map);\n    marker{$key}.bindPopup(\"{$label}\");";
}
?>
<!DOCTYPE html>
 public function __construct()
 {
     $app = $this;
     // -- global generic parameters ---------------------------------------
     $this['app.debug'] = false;
     $this['app.charset'] = 'UTF-8';
     $this['app.name'] = 'shakethenations';
     $this['app.signature'] = 'Shake The Nations!';
     $this['app.feed'] = ' http://www.emsc-csem.org/service/rss/rss.php?typ=emsc&min_lat=10&min_long=-30&max_long=65';
     // -- global directories location -------------------------------------
     $this['app.dir.base'] = realpath(__DIR__ . '/../../../');
     $this['app.dir.cache'] = $this['app.dir.base'] . '/app/Cache';
     $this['app.dir.doc'] = $this['app.dir.base'] . '/doc';
     $this['app.dir.resources'] = $this['app.dir.base'] . '/app/Resources';
     $this['app.dir.translations'] = $this['app.dir.resources'] . '/Translations';
     // -- console ---------------------------------------------------------
     $this['console.input'] = null;
     $this['console.output'] = null;
     $this['console.dialog'] = null;
     // -- timer -----------------------------------------------------------
     $this['app.timer.start'] = 0.0;
     $this['app.timer.finish'] = 0.0;
     // -- event dispatcher ------------------------------------------------
     $this['dispatcher'] = $this->share(function () {
         return new EventDispatcher();
     });
     // -- finder ----------------------------------------------------------
     $this['finder'] = function () {
         return new Finder();
     };
     // -- filesystem ------------------------------------------------------
     $this['filesystem'] = $this->share(function ($app) {
         return new Filesystem();
     });
     // -- configurator ----------------------------------------------------
     $this['configurator'] = $this->share(function ($app) {
         return new Configurator($app);
     });
     $this['parser'] = $this->share(function ($app) {
         return new Parser($app);
     });
     // -- slugger ---------------------------------------------------------
     $this['slugger'] = $app->share(function () use($app) {
         return new Slugger($app);
     });
     // -- geocoder ------------------------------------------------
     $this['geocoder'] = $this->share(function () {
         $geocoder = new \Geocoder\Geocoder();
         $buzz = new \Buzz\Browser(new \Buzz\Client\Curl());
         $adapter = new \Geocoder\HttpAdapter\BuzzHttpAdapter($buzz);
         $geocoder->registerProviders(array(new \Geocoder\Provider\GoogleMapsProvider($adapter)));
         return $geocoder;
     });
     // -- feeder ------------------------------------------------
     $this['feeder.default'] = '\\ShakeTheNations\\Feeders\\EMSCFeeder';
     $this['feeder'] = function ($this) use($app) {
         $class = new \ReflectionClass($this['feeder.default']);
         $instance = $class->newInstanceArgs(array($app));
         return $instance;
     };
 }