LeafletController.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace LeafletBundle\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\Controller;
  4. use Symfony\Component\Workflow\Exception\ExceptionInterface;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Sonata\AdminBundle\Admin\Pool;
  8. class LeafletController extends Controller
  9. {
  10. public function createVectorAction($layerId = 1, Request $request)
  11. {
  12. $vectorsPopup = $vectors = array();
  13. //{"lat":-34.6036844,"lng":-58.381559100000004,"zoom":10} BS AS
  14. $map = array('lat'=>-34.6036844,'lng'=>-58.381559100000004,'zoom'=>10);
  15. $layerName = "New Layer";
  16. $em = $this->get('doctrine')->getManager();
  17. $layer = $em->getRepository("MapBundle\Entity\Layer")->findOneById($layerId);
  18. $layers = array();
  19. if(!is_null($layer)) {
  20. $layerName = $layer->getName();
  21. if($layer->getMap()) {
  22. $_layers = $layer->getMap()->getLayers();
  23. foreach($_layers as $k => $l) {
  24. if($l->getId() == $layerId) continue;
  25. $_vectors = $l->getVectors();
  26. foreach($_vectors as $k => $v) {$vectorsPopup[] = $v;}
  27. $layers[] = array('name' => $l->getName(),'vectors'=>$_vectors);
  28. }
  29. $map = $layer->getMap()->jsonExtraData();
  30. }
  31. $vectors = $em->getRepository("MapBundle\Entity\Vector")->findByLayer($layer);
  32. foreach($vectors as $k => $v) {$vectorsPopup[] = $v;}
  33. }
  34. $adminPool = $this->get('sonata.admin.pool');
  35. $url_post = "admin_map_vector_create_ajax";
  36. $url_delete = "admin_map_vector_delete_ajax";
  37. return $this->render('LeafletBundle:Leaflet:create_vector.html.twig', array(
  38. 'base_template' => $adminPool->getTemplate('layout'),
  39. 'admin_pool' => $adminPool,
  40. 'admin' => $adminPool->getAdminByClass("MapBundle\Entity\Map"),
  41. 'uuid' => time(),
  42. 'url_post' => $url_post,
  43. 'url_delete' => $url_delete,
  44. 'vectors' => $vectors,
  45. 'layerId' => $layerId,
  46. 'map' => $map,
  47. 'layers' => $layers,
  48. 'vectorsPopup' => $vectorsPopup,
  49. 'layerName' => $layerName
  50. ));
  51. }
  52. public function saveVectorAction(Request $request)
  53. {
  54. print_r($request->request->all());
  55. die;
  56. }
  57. public function showMapAction($mapId = null, Request $request)
  58. {
  59. if(is_null($mapId)) {
  60. print_r("error: null mapId");
  61. die;
  62. }
  63. $layers = array();
  64. $em = $this->get('doctrine')->getManager();
  65. $map = $em->getRepository("MapBundle\Entity\Map")->findOneById($mapId);
  66. $objectClasses = $em->getRepository("MapBundle\Entity\ObjectClass")->findAll();
  67. $_layers = $map->getLayers();
  68. foreach($_layers as $k => $l) {
  69. $_vectors = $l->getVectors();
  70. $layers[] = array('name' => $l->getName(),'vectors'=>$_vectors);
  71. }
  72. $map = $map->jsonExtraData();
  73. $adminPool = $this->get('sonata.admin.pool');
  74. return $this->render('LeafletBundle:Leaflet:show_map.html.twig', array(
  75. 'base_template' => $adminPool->getTemplate('layout'),
  76. 'admin_pool' => $adminPool,
  77. 'admin' => $adminPool->getAdminByClass("MapBundle\Entity\Map"),
  78. 'map' => $map,
  79. 'layers' => $layers,
  80. 'objectClasses' => $objectClasses
  81. ));
  82. }
  83. }