示例#1
0
 /**
  * Store a newly created resource in storage.
  *
  * @return Response
  */
 public function store(CrearCampRequest $request)
 {
     $camp = new Camp($request->all());
     if (!($request->punts == "")) {
         //dd($request->poligon);
         $centre = GoogleMapsController::calcularCentrePoligon($request->punts);
         $arraycoords = GoogleMapsController::stringToArray($request->punts);
         //es forma el string per a insertar en mysql el linestring. Entre punt i
         //punt s'inserta una ',' excepte l'ultim punt (no es guarda si acaba en ',')
         $string = 'GeomFromText(\'LINESTRING(';
         for ($i = 0; $i < count($arraycoords); $i++) {
             $string = $string . $arraycoords[$i] . ' ';
             $i++;
             if (!($i < count($arraycoords) - 1)) {
                 $string = $string . $arraycoords[$i];
             } else {
                 $string = $string . $arraycoords[$i] . ',';
             }
         }
         $string = $string . ')\')';
         $camp->poligon = DB::raw($string);
         $camp->centre = DB::raw('PointFromText(\'POINT(' . $centre[0] . ' ' . $centre[1] . ')\')');
     }
     $camp->user_profile_id = UserProfile::perfilId(Auth::user()->id);
     $camp->save();
     return redirect('home/camp/' . $camp->id);
 }
示例#2
0
 public static function calcularCentrePoligon($dades)
 {
     $valor = GoogleMapsController::stringToArray($dades);
     for ($i = 0; $i < count($valor); $i++) {
         switch ($i) {
             case '0':
                 $miny = $valor[$i];
                 $maxy = $valor[$i];
                 break;
             case '1':
                 $minx = $valor[$i];
                 $maxx = $valor[$i];
                 break;
             default:
                 if ($i % 2 == 0) {
                     if ($valor[$i] > $maxy) {
                         $maxy = $valor[$i];
                     }
                     if ($valor[$i] < $miny) {
                         $miny = $valor[$i];
                     }
                 } else {
                     if ($valor[$i] > $maxx) {
                         $maxx = $valor[$i];
                     }
                     if ($valor[$i] < $minx) {
                         $minx = $valor[$i];
                     }
                 }
                 break;
         }
     }
     $centre[] = $minx + ($maxx - $minx) / 2;
     $centre[] = $miny + ($maxy - $miny) / 2;
     return $centre;
 }