66 lines
2.1 KiB
PHP
66 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace App\Services;
|
|
|
|
use Illuminate\Support\Facades\App;
|
|
|
|
class NominatimService
|
|
{
|
|
public function get_way_id_from_nominatim($lat = null, $lng = null)
|
|
{
|
|
if (App::isProduction())
|
|
{
|
|
$url = "https://testmap.141.ir/nominatim/reverse?format=jsonv2&lat=".$lat."&lon=".$lng."&zoom=16&addressdetails=16";
|
|
$arrContextOptions=array(
|
|
"ssl"=>array(
|
|
"verify_peer"=>false,
|
|
"verify_peer_name"=>false,
|
|
),
|
|
);
|
|
|
|
$result = file_get_contents($url, false, stream_context_create($arrContextOptions));
|
|
$result = json_decode($result);
|
|
if (isset($result->osm_type)) {
|
|
if ($result->osm_type == 'way') {
|
|
return $result->osm_id;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
function getIDFromNominatim($s_lng, $s_lat, $d_lng, $d_lat)
|
|
{
|
|
if (App::isProduction())
|
|
{
|
|
$url = "https://testmap.141.ir/route/v1/driving/" . $s_lng . "," . $s_lat . ";" . $d_lng . "," . $d_lat . "?overview=full&alternatives=true&steps=true";
|
|
$arrContextOptions = array(
|
|
"ssl" => array(
|
|
"verify_peer" => false,
|
|
"verify_peer_name" => false,
|
|
),
|
|
);
|
|
$result = file_get_contents($url, false, stream_context_create($arrContextOptions));
|
|
$result = json_decode($result);
|
|
if (count($result->routes) > 1 && $result->routes[1]->distance < $result->routes[0]->distance) {
|
|
// if(){
|
|
$ways = $result->routes[1]->legs[0]->steps;
|
|
// }
|
|
} else
|
|
$ways = $result->routes[0]->legs[0]->steps;
|
|
$ids = array();
|
|
foreach ($ways as $key => $value) {
|
|
if (!in_array($value->name, $ids)) {
|
|
$ids[] = $value->name;
|
|
}
|
|
}
|
|
|
|
return $ids;
|
|
}
|
|
|
|
return [1, 2, 3];
|
|
}
|
|
}
|