/**
  * it draws object on map
  *
  * @param Map $map
  */
 public function draw(Map $map)
 {
     $points = array();
     $count = 0;
     foreach ($this->_points as $point) {
         $coordinates = $map->getPixelPointFromCoordinates($point->getLon(), $point->getLat());
         $points[] = $coordinates['x'];
         $points[] = $coordinates['y'];
         $count++;
     }
     if ($count < 3) {
         return;
     }
     imagefilledpolygon($map->getImage(), $points, $count, $this->_getDrawColor($map->getImage()));
 }
 /**
  * method puts image onto map image
  * 
  * @param Map  $map
  * @param resources $imageToPut
  */
 public function putImage(Map $map, $imageToPut)
 {
     $mapImage = $map->getImage();
     $width = imagesx($imageToPut);
     $height = imagesy($imageToPut);
     imagecopy($mapImage, $imageToPut, imagesx($mapImage) - $width, 0, 0, 0, $width, $height);
 }
예제 #3
0
 /**
  * draw point on map
  *
  * @param Map $map
  */
 public function draw(Map $map)
 {
     $image = $map->getImage();
     $color = $this->_getDrawColor($image);
     $pointInPixels = $map->getPixelPointFromCoordinates($this->_coordinates['lon'], $this->_coordinates['lat']);
     imagesetpixel($image, $pointInPixels['x'], $pointInPixels['y'], $color);
 }
예제 #4
0
 /**
  * draw line on map
  *
  * @param Map $map
  */
 public function draw(Map $map)
 {
     $image = $map->getImage();
     $startPointInPixels = $map->getPixelPointFromCoordinates($this->_startPoint->getLon(), $this->_startPoint->getLat());
     $endPointInPixels = $map->getPixelPointFromCoordinates($this->_endPoint->getLon(), $this->_endPoint->getLat());
     $this->_drawLine($image, $startPointInPixels['x'], $startPointInPixels['y'], $endPointInPixels['x'], $endPointInPixels['y']);
 }
예제 #5
0
 /**
  * methods find out which label should be used for map
  *
  * @param float $scale
  * @param float $equatorPixelsPerKm
  */
 private function _findOutWhichLabel($scale, $equatorPixelsPerKm)
 {
     $mapWidth = imagesx($this->_map->getImage());
     $maxLenghtOfScaleBar = $mapWidth / 4;
     foreach (self::$possibleLables as $label) {
         if ($this->_calculateLengthOfScaleBar($label, $scale, $equatorPixelsPerKm) < $maxLenghtOfScaleBar) {
             return $label;
         }
     }
     return $label;
 }
예제 #6
0
 public function __construct(Map $map, Conf $conf)
 {
     $this->setImageHandler($map->getImageHandler());
     $this->_logoLayout = LogoLayout::factory($conf->get('logo_layout'));
     $this->_logoFiles = $conf->get('logo_files');
     $this->setWorldMap($map->getWorldMap());
     $leftUpCorner = $map->getLeftUpCorner();
     $this->setLeftUpCorner($leftUpCorner['lon'], $leftUpCorner['lat']);
     $rightDownCorner = $map->getRightDownCorner();
     $this->setRightDownCorner($rightDownCorner['lon'], $rightDownCorner['lat']);
     parent::__construct($map->getImage());
 }
 /**
  * draw point on map
  *
  * @param Map $map
  */
 public function draw(Map $map)
 {
     $image = $map->getImage();
     $color = $this->_getDrawColor($image);
     $pointImage = false;
     if ($this->hasImageUrl()) {
         $size = HelpClass::getSizeOfRemoteFile($this->_imageUrl->getUrl());
         if ($size <= self::$maxSizeOfPointImage) {
             try {
                 $imageHandler = ImageHandler::createImageHandlerFromFileExtension($this->_imageUrl->getUrl());
                 $pointImage = $imageHandler->loadImage($this->_imageUrl->getUrl());
             } catch (ImageHandlerException $e) {
             }
         }
     }
     if ($pointImage !== false) {
         $map->putImage($pointImage, $this->getLon(), $this->getLat());
     } else {
         $color = $this->_getDrawColor($image);
         $point = $map->getPixelPointFromCoordinates($this->getLon(), $this->getLat());
         $vertices = array($point['x'], $point['y'], $point['x'] - 10, $point['y'] - 20, $point['x'] + 10, $point['y'] - 20);
         imagefilledpolygon($map->getImage(), $vertices, 3, $color);
     }
 }
 /**
  * method puts image onto map image
  *
  * @param Map  $map
  * @param resources $imageToPut
  */
 public function putImage(Map $map, $imageToPut)
 {
     $mapImage = $map->getImage();
     $width = imagesx($imageToPut);
     $height = imagesy($imageToPut);
     if ($map instanceof LogoMap) {
         $layout = $map->getLogoLayout();
         $logoImage = $map->getLogoImage();
         if ($logoImage !== false && $layout instanceof LayoutRightDownCorner) {
             $logoHeight = imagesy($logoImage);
             imagecopymerge($mapImage, $imageToPut, imagesx($mapImage) - $width, imagesy($mapImage) - $height - $logoHeight, 0, 0, $width, $height, 100);
             return;
         }
     }
     imagecopymerge($mapImage, $imageToPut, imagesx($mapImage) - $width, imagesy($mapImage) - $height, 0, 0, $width, $height, 100);
 }
 /**
  * method puts image onto map image
  * 
  * @param Map  $map
  * @param resources $imageToPut
  */
 public function putImage(Map $map, $imageToPut)
 {
     $mapImage = $map->getImage();
     imagecopy($mapImage, $imageToPut, 0, 0, 0, 0, imagesx($imageToPut), imagesy($imageToPut));
 }
예제 #10
0
<?php

include "Map.php";
header('Content-type: image/jpeg');
$img = new Map();
$img->addMark(0, 0, "Test1");
$img->addMark(1509.2726, -886.655, "Test2");
$img->addMark(-2065.115, -83.5138, "Test3");
$img->addMark(1711.824, -1894.1769, "Test4");
imagejpeg($img->getImage());
imagedestroy($img->getImage());
 /**
  * create output map from the temoporary one
  *
  * @param Map $map
  */
 private function _prepareOutputMap($map)
 {
     $image = $map->getImage();
     $outputMapLeftUpInPixels = $this->_getLeftUpCornerForCutingResultMap($map);
     $resultMap = new Map($this->_createResultMapImage($image, $outputMapLeftUpInPixels['x'], $outputMapLeftUpInPixels['y'], $this->_mapData->getWidth(), $this->_mapData->getHeight()));
     $this->_setUpResultMapCorners($resultMap);
     $resultMap->setWorldMap($this->_worldMap);
     $resultMap->setImageHandler($this->_tileSource->getImageHandler());
     return $resultMap;
 }