예제 #1
0
파일: Geo.php 프로젝트: Quiss/Evrika
 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);
 }
예제 #2
0
파일: geo.php 프로젝트: Nickersoft/eDart
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;
 }
예제 #4
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;
 }
예제 #5
0
파일: MapService.php 프로젝트: chadyred/crm
 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;
 }
예제 #6
0
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();
        }
        sleep(1);
    }
예제 #7
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);
 }