/** * Add points to an existing long lat * @param $request * @return Response */ public function addPointsToPath(Request $request) { $new_points = $request['points']; $array = GeoHelper::sanitizePoints($new_points); //dd($array); $old_path = $request['path']; $decoded_path = GeoHelper::decode($old_path); $points = array_merge($decoded_path, $array); return GeoHelper::encode($points); }
public static function resolveNewSegmentFromActivity($token, $travel_data, $new_activity) { $iterinary = self::getUserCurrentIterinary($token); // return $iterinary; if (!$iterinary || isset($iterinary['err'])) { $response = ['err code' => '403', 'message' => 'no current iterinaries found for user']; return $response; } // dd($new_activity); $route = $iterinary->route; $last_activity = self::getLastActivity($token); // return $last_activity; $segment = new Segment(); // return $last_activity; $segment->destination_name = $last_activity->place_name; $segment->origin_pos = $last_activity->lat . ',' . $last_activity->lng; $segment->details = $travel_data['transpo_details']; $segment->mode = $travel_data['mode']; $segment->day = self::getDiffInDays($token, $iterinary->id); $segment->origin_name = $new_activity['place_name']; $segment->destination_pos = $new_activity['lat'] . ',' . $new_activity['lng']; // return $iterinary; $segment->price = $travel_data['expense']; $segment->sequence = $route->segments()->count() + 1; $points = array_merge([$last_activity->lat, $last_activity->lng], [$new_activity['lat'], $new_activity['lng']]); $segment->path = GeolocationHelper::encode($points); $segment->distance = GeolocationHelper::calculateDistance($segment); $segment->duration = GeolocationHelper::durationFromLastActivity($last_activity); $activity = new Activity(); $activity->iterinary_id = $iterinary->id; $activity->day = self::getDiffInDays($token, $iterinary->id); $activity->end_time = Carbon::now()->toTimeString(); $activity->start_time = $last_activity->created_at->toTimeString(); // end activity // from end segment function // $segment->destination_name = $destination_name; // $segment->destination_pos = $lat . ',' . $lng; // $segment->price = $price; // $segment->distance = GeolocationHelper::calculateDistance($segment); // $segment->duration = GeolocationHelper::calculateDuration($segment); // $points = array_merge(GeolocationHelper::parseLongLat($segment->origin_pos), [$lng, $lat]); // // $segment->path = GeolocationHelper::encode($points); //end from end segemtn function // dd($segment); $route->segments()->save($segment); $segment->activity()->save($activity); }
/** * @param $origin * @param $destination * @return string */ public static function getFlightPath($origin, $destination) { $array = []; // FORMAT // $array = [ // 0 => [lat,lng], // 1 => [lat,lng] // ]; $array[0] = Geohelper::parseLongLat($origin); $array[1] = Geohelper::parseLongLat($destination); $path = Geohelper::encode($array); return $path; }
/** * @return \Symfony\Component\HttpFoundation\Response */ public function getPath() { $iterinary_id = Input::get('iterinary_id'); $iterinary = Iterinary::find($iterinary_id); $route = $iterinary->route; if (!$route) { return response()->json(['err' => 'route not found'], 404); } // dd($iterinary) $segments = $route->segments()->get(); if ($segments->isEmpty()) { return response()->json(['err' => 'no segments', 'center_lat' => ''], 400); } $activities = $iterinary->activities()->with('typable')->get(); $points = []; foreach ($segments as $segment) { $points[] = GeolocationHelper::decode($segment->path); } $center[] = $points[0][0]; $center[] += $points[0][1]; $points = GeolocationHelper::flatten($points); $path = GeolocationHelper::encode($points); $data = ['center' => $center, 'path' => $path, 'activities' => $activities]; return response()->json($data, 200); }