Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2019
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.48 KB | None | 0 0
  1. private function saveCoordinates(Address $address) : void
  2. {
  3. $preparedAddress = str_replace(' ', '+', $address->address . '+' . $address->postcode . '+' . $address->town);
  4. $geocode = file_get_contents('https://maps.googleapis.com/maps/api/geocode/json?address=' . $preparedAddress . '&key=' . env('GOOGLE_API_KEY'));
  5. $output = json_decode($geocode);
  6.  
  7. try {
  8. $address->lat = $output->results[0]->geometry->location->lat;
  9. $address->lng = $output->results[0]->geometry->location->lng;
  10. } catch (\Exception $e) {
  11. $address->lat = null;
  12. $address->lng = null;
  13.  
  14. Log::debug('error in counting distance: ' . json_encode($e));
  15. }
  16.  
  17. $address->save();
  18. }
  19.  
  20. private function saveDistance(Address $address) : void
  21. {
  22. $lat1 = $address->lat;
  23. $lon1 = $address->lng;
  24. $lat2 = config('addresses.lat');
  25. $lon2 = config('addresses.lng');
  26.  
  27. if (($lat1 == $lat2) && ($lon1 == $lon2)) {
  28. $address->distance = 0;
  29. $address->save();
  30. } else {
  31. $theta = $lon1 - $lon2;
  32. $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
  33. $dist = acos($dist);
  34. $dist = rad2deg($dist);
  35. $km = $dist * config('addresses.const');
  36.  
  37. $address->distance = $km;
  38. $address->save();
  39. }
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement