/** * Renders a marker. * * @param Ivory\GoogleMap\Overlays\Marker $marker The marker. * @param Ivory\GoogleMap\Map $map The map. * * @return string The JS output. */ public function render(Marker $marker, Map $map = null) { $this->jsonBuilder->reset()->setValue('[position]', $marker->getPosition()->getJavascriptVariable(), false); if ($map !== null) { $this->jsonBuilder->setValue('[map]', $map->getJavascriptVariable(), false); } if ($marker->hasAnimation()) { $this->jsonBuilder->setValue('[animation]', $this->animationHelper->render($marker->getAnimation()), false); } if ($marker->hasIcon()) { $this->jsonBuilder->setValue('[icon]', $marker->getIcon()->getJavascriptVariable(), false); } if ($marker->hasShadow()) { $this->jsonBuilder->setValue('[shadow]', $marker->getShadow()->getJavascriptVariable(), false); } if ($marker->hasShape()) { $this->jsonBuilder->setValue('[shape]', $marker->getShape()->getJavascriptVariable(), false); } $this->jsonBuilder->setValues($marker->getOptions()); return sprintf('%s = new google.maps.Marker(%s);' . PHP_EOL, $marker->getJavascriptVariable(), $this->jsonBuilder->build()); }
public function testRenderJsContainerMarkerShapes() { $map = new Map(); $map->setJavascriptVariable('map'); $map->addMarker($marker = new Marker()); $marker->setShape('poly', array(1, 1, 1, -1, -1, -1, -1, 1)); $marker->getShape()->setJavascriptVariable('marker_shape'); $expected = <<<EOF map_container.marker_shapes.marker_shape = marker_shape = new google.maps.MarkerShape({"type":"poly","coords":[1,1,1,-1,-1,-1,-1,1]}); EOF; $this->assertSame($expected, $this->mapHelper->renderJsContainerMarkerShapes($map)); }
public function testRenderWitoutMap() { $marker = new Marker(); $marker->setJavascriptVariable('marker'); $marker->setAnimation(Animation::BOUNCE); $marker->setPosition(1.1, 2.1, true); $marker->getPosition()->setJavascriptVariable('position'); $marker->setIcon('url'); $marker->getIcon()->setJavascriptVariable('icon'); $marker->setShadow('url'); $marker->getShadow()->setJavascriptVariable('shadow'); $marker->setShape('poly', array(1, 2, 3, 4)); $marker->getShape()->setJavascriptVariable('shape'); $expected = 'marker = new google.maps.Marker({' . '"position":position,' . '"animation":google.maps.Animation.BOUNCE,' . '"icon":icon,' . '"shadow":shadow,' . '"shape":shape' . '});' . PHP_EOL; $this->assertSame($expected, $this->markerHelper->render($marker)); }
public function testShapeWithNullValue() { $this->marker->setShape('poly', array(1, 2, 3, 4)); $this->marker->setShape(null); $this->assertNull($this->marker->getShape()); }