diff --git a/images/extramarkers.png b/images/extramarkers.png new file mode 100644 index 0000000..35ff61b Binary files /dev/null and b/images/extramarkers.png differ diff --git a/src/Element/Marker/AbstractMarker.php b/src/Element/Marker/AbstractMarker.php new file mode 100644 index 0000000..0252895 --- /dev/null +++ b/src/Element/Marker/AbstractMarker.php @@ -0,0 +1,26 @@ +latitude; + } + + public function getLongitude(): float + { + return $this->longitude; + } +} diff --git a/src/Element/Marker/ExtraMarker.php b/src/Element/Marker/ExtraMarker.php new file mode 100644 index 0000000..c0a52e3 --- /dev/null +++ b/src/Element/Marker/ExtraMarker.php @@ -0,0 +1,38 @@ +shape = $shape; + $this->color = $color; + + $this->latitude = $latitude; + $this->longitude = $longitude; + } +} diff --git a/src/Element/Marker/Marker.php b/src/Element/Marker/Marker.php index 06dc20e..af1aa62 100644 --- a/src/Element/Marker/Marker.php +++ b/src/Element/Marker/Marker.php @@ -2,10 +2,8 @@ namespace StaticMapLite\Element\Marker; -class Marker +class Marker extends AbstractMarker { - protected $latitude; - protected $longitude; protected $markerType; public function __construct(string $markerType, float $latitude, float $longitude) @@ -20,13 +18,5 @@ class Marker return $this->markerType; } - public function getLatitude(): float - { - return $this->latitude; - } - public function getLongitude(): float - { - return $this->longitude; - } } diff --git a/src/ElementPrinter/Marker/MarkerPrinter.php b/src/ElementPrinter/Marker/MarkerPrinter.php index ac4406e..1a3af80 100644 --- a/src/ElementPrinter/Marker/MarkerPrinter.php +++ b/src/ElementPrinter/Marker/MarkerPrinter.php @@ -3,6 +3,7 @@ namespace StaticMapLite\ElementPrinter\Marker; use StaticMapLite\Canvas\Canvas; +use StaticMapLite\Element\Marker\ExtraMarker; use StaticMapLite\Element\Marker\Marker; use StaticMapLite\Util; @@ -56,6 +57,30 @@ class MarkerPrinter return $this; } + /** + public function placeExtraMarker(ExtraMarker $extraMarker) + { + $extramarkers = imagecreatefrompng($this->markerBaseDir . '/../extramarkers.png'); + + $markerImage = imagecreatetruecolor(75, 100); + $trans_colour = imagecolorallocatealpha($markerImage, 0, 0, 0, 127); + imagefill($markerImage, 0, 0, $trans_colour); + + $destX = floor(($this->width / 2) - $this->tileSize * ($this->centerX - Util::lonToTile($extraMarker->getLongitude(), $this->zoom))); + $destY = floor(($this->height / 2) - $this->tileSize * ($this->centerY - Util::latToTile($extraMarker->getLatitude(), $this->zoom))); + + $markerWidth = imagesx($markerImage); + $markerHeight = imagesy($markerImage); + + $destX -= $markerWidth / 2; + $destY -= $markerHeight; + + + imagecopy($markerImage, $extramarkers, 0, 0, 0, 0, $markerWidth, $markerHeight); + + imagecopy($this->canvas->getImage(), $markerImage, $destX, $destY, 0, 0, imagesx($markerImage), imagesy($markerImage)); + } +**/ public function paint(Canvas $canvas): MarkerPrinter { $markerFilename = ''; @@ -118,4 +143,4 @@ class MarkerPrinter return $this; } -} \ No newline at end of file +} diff --git a/src/Printer.php b/src/Printer.php index e26765e..d48ff85 100644 --- a/src/Printer.php +++ b/src/Printer.php @@ -4,7 +4,7 @@ namespace StaticMapLite; use StaticMapLite\Canvas\Canvas; use StaticMapLite\CanvasTilePainter\CanvasTilePainter; -use StaticMapLite\Element\Marker\Marker; +use StaticMapLite\Element\Marker\AbstractMarker; use StaticMapLite\Element\Polyline\Polyline; use StaticMapLite\ElementPrinter\Marker\MarkerPrinter; use StaticMapLite\ElementPrinter\Polyline\PolylinePrinter; @@ -61,7 +61,7 @@ class Printer $this->tileResolver->setTileLayerUrl($this->tileSrcUrl[$this->maptype]); } - public function addMarker(Marker $marker): Printer + public function addMarker(AbstractMarker $marker): Printer { $this->markers[] = $marker; diff --git a/web/staticmap.php b/web/staticmap.php index c4d967b..30d3ac0 100644 --- a/web/staticmap.php +++ b/web/staticmap.php @@ -27,6 +27,7 @@ require_once '../vendor/autoload.php'; +use StaticMapLite\Element\Marker\ExtraMarker; use StaticMapLite\Element\Marker\Marker; use StaticMapLite\Element\Polyline\Polyline; use StaticMapLite\Printer; @@ -51,7 +52,7 @@ if ($markers) { foreach ($markerList as $markerData) { list($markerLatitude, $markerLongitude, $markerType) = explode(',', $markerData); - $marker = new Marker($markerType, $markerLatitude, $markerLongitude); + $marker = new ExtraMarker(ExtraMarker::SHAPE_CIRCLE, ExtraMarker::COLOR_GREEN, $markerLatitude, $markerLongitude); $printer->addMarker($marker); }