/** * Checks the render method */ public function testRender() { $coordinateTest = new Coordinate(1.1, 2.1, true); $this->assertEquals(self::$coordinateHelper->render($coordinateTest), 'new google.maps.LatLng(1.1, 2.1, true)'); $coordinateTest = new Coordinate(2.1, 1.1, false); $this->assertEquals(self::$coordinateHelper->render($coordinateTest), 'new google.maps.LatLng(2.1, 1.1, false)'); }
/** * Renders the marker * * @param Ivory\GoogleMapBundle\Model\Overlays\Marker $marker * @param Ivory\GoogleMapBundle\Model\Map $map * @return string HTML output */ public function render(Marker $marker, Map $map) { $html = array(); $markerJSONOptions = sprintf('{"map":%s,"position":%s', $map->getJavascriptVariable(), $this->coordinateHelper->render($marker->getPosition())); $markerOptions = $marker->getOptions(); if ($marker->hasAnimation()) { $markerJSONOptions .= ', "animation":' . $this->animationHelper->render($marker->getAnimation()); } if ($marker->hasIcon()) { $html[] = $this->markerImageHelper->render($marker->getIcon()); $markerJSONOptions .= ', "icon":' . $marker->getIcon()->getJavascriptVariable(); } if ($marker->hasShadow()) { $html[] = $this->markerImageHelper->render($marker->getShadow()); $markerJSONOptions .= ', "shadow":' . $marker->getShadow()->getJavascriptVariable(); } if ($marker->hasShape()) { $html[] = $this->markerShapeHelper->render($marker->getShape()); $markerJSONOptions .= ', "shape":' . $marker->getShape()->getJavascriptVariable(); } if (!empty($markerOptions)) { $markerJSONOptions .= ',' . substr(json_encode($markerOptions), 1); } else { $markerJSONOptions .= '}'; } $html[] = sprintf('var %s = new google.maps.Marker(%s);' . PHP_EOL, $marker->getJavascriptVariable(), $markerJSONOptions); if ($marker->hasInfoWindow()) { $html[] = $this->infoWindowHelper->render($marker->getInfoWindow(), false); if ($marker->getInfoWindow()->isOpen()) { $html[] = $this->infoWindowHelper->renderOpen($marker->getInfoWindow(), $map, $marker); } } return implode('', $html); }
/** * Renders the map javascript circle * * @param Ivory\GoogleMapBundle\Model\Overlays\Circle $circle * @param Ivory\GoogleMapBundle\Model\Map $map */ public function render(Circle $circle, Map $map) { $circleOptions = array_merge(array('radius' => $circle->getRadius()), $circle->getOptions()); $circleJSONOptions = sprintf('{"map":%s,"center":%s,', $map->getJavascriptVariable(), $this->coordinateHelper->render($circle->getCenter())); $circleJSONOptions .= substr(json_encode($circleOptions), 1); return sprintf('var %s = new google.maps.Circle(%s);' . PHP_EOL, $circle->getJavascriptVariable(), $circleJSONOptions); }
/** * Renders the polygon * * @param Ivory\GoogleMapBundle\Model\Overlays\Polygon $polygon * @param Ivory\GoogleMapBundle\Model\Map $map * @return string HTML output */ public function render(Polygon $polygon, Map $map) { $polygonOptions = $polygon->getOptions(); $polygonCoordinates = array(); foreach ($polygon->getCoordinates() as $coordinate) { $polygonCoordinates[] = $this->coordinateHelper->render($coordinate); } $polygonJSONOptions = sprintf('{"map":%s,"paths":%s', $map->getJavascriptVariable(), '[' . implode(',', $polygonCoordinates) . ']'); if (!empty($polygonOptions)) { $polygonJSONOptions .= ',' . substr(json_encode($polygonOptions), 1); } else { $polygonJSONOptions .= '}'; } return sprintf('var %s = new google.maps.Polygon(%s);' . PHP_EOL, $polygon->getJavascriptVariable(), $polygonJSONOptions); }