/**
  * 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);
 }