/** * @param $latitudeFrom * @param $longitudeFrom * @param Place $place * @return int */ public function calculateDistance($latitudeFrom, $longitudeFrom, Place $place) { $latitudeFrom = str_replace(",", ".", $latitudeFrom); $longitudeFrom = str_replace(",", ".", $longitudeFrom); $latFrom = deg2rad($latitudeFrom); $lonFrom = deg2rad($longitudeFrom); $latTo = deg2rad($place->getLatitude()); $lonTo = deg2rad($place->getLongitude()); $earthRadius = 6371; $latDelta = $latTo - $latFrom; $lonDelta = $lonTo - $lonFrom; $angle = 2 * asin(sqrt(pow(sin($latDelta / 2), 2) + cos($latFrom) * cos($latTo) * pow(sin($lonDelta / 2), 2))); return $angle * $earthRadius; }
/** * @param Request $request * @param Place $place * @Put("admin/places/{id}") * @return Response */ public function putPlaceAction(Request $request, Place $place) { $em = $repo = $this->getDoctrine()->getManager(); $now = new \DateTime('now'); $postContent = $request->getContent(); if (!empty($postContent)) { $postContent = json_decode($postContent); $place->setName($postContent->name)->setLatitude($postContent->latitude)->setLongitude($postContent->longitude)->setDescription($postContent->description)->setPicture($postContent->picture)->setUpdatedAt($now)->setType($postContent->type); $validator = $this->get('validator'); $errors = $validator->validate($place); if (count($errors) > 0) { $view = $this->view($errors, 400)->setFormat('json'); } else { $em->persist($place); $em->flush(); $view = $this->view($place, 201)->setFormat('json'); } } else { $view = $this->view('No data posted.', 400)->setFormat('json'); } return $this->handleView($view); }