/** * 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; } } }
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; }
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); }
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; }
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; }
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(); }
/** * 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); }
<?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; }; }