Пример #1
0
 /**
  * Create empty map
  *
  * @param Coordinate $center
  * @param bool       $async
  *
  * @return Map
  * @throws \Ivory\GoogleMap\Exception\AssetException
  * @throws \Ivory\GoogleMap\Exception\MapException
  */
 public function createEmptyMap(Coordinate $center, bool $async = true) : Map
 {
     $map = new Map();
     $map->setLanguage('en');
     $map->setPrefixJavascriptVariable('map_');
     $map->setHtmlContainerId('map_canvas');
     $map->setMapOption('mapTypeId', MapTypeId::ROADMAP);
     $map->setAutoZoom(false);
     $map->setCenter($center);
     $map->setMapOption('zoom', 2);
     $map->setJavascriptVariable('location_map');
     $map->setAsync($async);
     $map->setStylesheetOptions(['width' => '100%', 'height' => '300px']);
     return $map;
 }
Пример #2
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;
 }
 /**
  * View action
  * @param int $id
  * @throws \Exception
  */
 public function viewAction($id = null)
 {
     if (is_null($id)) {
         throw new \Exception('Bad request');
     }
     $id = abs((int) $id);
     $userId = $this->session->get('uid');
     $model = $this->loadModel('events');
     $comments = $this->loadModel('comment');
     $event = $model->getEvent($id);
     $isJoined = $model->checkJoinedUser($id, $userId);
     $attendingUsers = $model->getAttendingUsers($id);
     /** Google Maps API */
     $map = new Map();
     $markerPositions = $instructions = $commonInfo = [];
     $map->setLanguage('uk');
     $map->setAutoZoom(true);
     $map->setPrefixJavascriptVariable('map_');
     $map->setHtmlContainerId('map-canvas-view');
     $map->setMapOptions(array('disableDefaultUI' => true, 'disableDoubleClickZoom' => true, 'mapTypeId' => 'roadmap'));
     $map->setStylesheetOptions(array('width' => '58%', 'height' => 'calc(100% - 0)', 'position' => 'absolute', 'right' => '0px', 'top' => '50px', 'bottom' => '2px', 'overflow' => 'hidden'));
     // Build directions
     $request = new DirectionsRequest();
     $request->setLanguage('uk');
     $request->setUnitSystem(UnitSystem::METRIC);
     $request->setTravelMode($event['routeMode']);
     $request->setOrigin($event['routeFrom']);
     $request->setDestination($event['routeTo']);
     // @TODO: Do it
     // $request->addWaypoint($event['routeVia']);
     // $request->setOptimizeWaypoints(true);
     // $request->setAvoidHighways(true);
     // $request->setAvoidTolls(true);
     // $request->setProvideRouteAlternatives(true);
     $directions = new Directions(new CurlHttpAdapter());
     $response = $directions->route($request);
     if ($response->getStatus() === 'OK') {
         $routes = $response->getRoutes();
         foreach ($routes as $route) {
             $overviewPolyline = $route->getOverviewPolyline();
             //$waypointOrder = $route->getWaypointOrder();  // Get the waypoint order
             foreach ($route->getLegs() as $leg) {
                 // Set the start location & the end location into array
                 $markerPositions = ['start' => [$leg->getStartLocation()->getLatitude(), $leg->getStartLocation()->getLongitude()], 'end' => [$leg->getEndLocation()->getLatitude(), $leg->getEndLocation()->getLongitude()]];
                 $commonInfo = ['distance' => $leg->getDistance()->getText(), 'duration' => $leg->getDuration()->getText(), 'startAddress' => $leg->getStartAddress(), 'endAddress' => $leg->getEndAddress()];
                 // Set the directions steps
                 foreach ($leg->getSteps() as $key => $step) {
                     $instructions[] = [$step->getInstructions(), $step->getDistance()->getText(), $step->getDuration()->getText(), $step->getTravelMode()];
                 }
             }
         }
         // Build markers
         foreach ($markerPositions as $latlng) {
             $position = new Coordinate($latlng[0], $latlng[1], true);
             $marker = new Marker($position, 'drop', null, null, null, new InfoWindow());
             $map->addMarker($marker);
         }
         // Build Polyline
         $encodedPolyline = new EncodedPolyline();
         $encodedPolyline->setValue($overviewPolyline->getValue());
         $encodedPolyline->setOptions(array('geodesic' => true, 'strokeColor' => '#3079ed', 'strokeOpacity' => 0.8, 'strokeWeight' => 5));
         $map->addEncodedPolyline($encodedPolyline);
     } else {
         $position = new Coordinate($event['latTo'], $event['lngTo']);
         $info = $event['routeTo'];
         $info .= !empty($event['date']) ? '<hr><i class="glyphicon glyphicon-time"></i> ' . $event['date'] : '';
         $info .= !empty($event['end_date']) ? '<br><i class="glyphicon glyphicon-time"></i> ' . $event['end_date'] : '';
         $marker = new Marker($position, 'drop', null, null, null, new InfoWindow($info));
         $map->addMarker($marker);
     }
     // Render map
     $mapHelper = new MapHelper();
     $this->view->map = $mapHelper->render($map);
     $this->view->event = $event;
     $this->view->comments = $comments->getComments($id);
     $this->view->commentsAccess = (bool) $userId;
     $this->view->isJoined = (bool) $isJoined;
     $this->view->attendingUsers = $attendingUsers;
     $this->view->instructions = $instructions;
     $this->view->render('events/view');
 }
Пример #4
0
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It is a breeze. Simply tell Lumen the URIs it should respond to
| and give it the Closure to call when that URI is requested.
|
*/
use Ivory\GoogleMap\Map;
use Ivory\GoogleMap\MapTypeId;
$app->get('/', function () use($app) {
    return $app->version();
});
$app->get('map', function () use($app) {
    $map = new Map();
    $map->setPrefixJavascriptVariable('map_');
    $map->setHtmlContainerId('map_canvas');
    $map->setAsync(false);
    $map->setAutoZoom(false);
    $map->setCenter(0, 0, true);
    $map->setMapOption('zoom', 3);
    $map->setBound(-2.1, -3.9, 2.6, 1.4, true, true);
    $map->setMapOption('mapTypeId', MapTypeId::ROADMAP);
    $map->setMapOption('mapTypeId', 'roadmap');
    $map->setMapOption('disableDefaultUI', true);
    $map->setMapOption('disableDoubleClickZoom', true);
    $map->setMapOptions(array('disableDefaultUI' => true, 'disableDoubleClickZoom' => true));
    $map->setStylesheetOption('width', '300px');
    $map->setStylesheetOption('height', '300px');
    $map->setStylesheetOptions(array('width' => '300px', 'height' => '300px'));
    $map->setLanguage('en');