а он близжайщую станцию метро, но что-то не работает
                  
                  
                  
                  
                  
                  <html>
                  
                  
                   <head>
                  
                  
                    <title>Тестируем PHP</title>
                  
                  
                   </head>
                  
                  
                   <body>
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  
                   <?php
                  
                  
                    // адрес
                  
                  
                  $address = "Петровка улица, 38, Москва";
                  
                  
                  // получение координат адреса
                  
                  
                  $coord = getCoordNameByAddress($address);
                  
                  
                  // получение ближайшего метро по координатам
                  
                  
                   $metro = getMetroNameByCoord($coord);
                  
                  
                  // вывод результата
                  
                  
                  var_dump($metro);
                  
                  
                   /
                  
                  
                  * Получение координат адреса
                  
                  
                  *
                  
                  
                  * @param $address string - адрес точки
                  
                  
                  * @return bool | array - false или массив с координатами [долгота,  широта]
                  
                  
                  */
                  
                  
                  function getCoordNameByAddress($address){
                  
                  
                      // удаление лишних пробелов между словами
                  
                  
                      $address = preg_replace("/ {2,}/", " ", $address);
                  
                  
                      // замена пробелов на плюсы
                  
                  
                      $address = str_replace(" ", "+", $address);
                  
                  
                      // формируется урл для запроса
                  
                  
                      $url_get_coord = "https://geocode-maps.yandex.ru/1.x/?geocode={$address}&format=json&results=1";
                  
                  
                      $result = @file_get_contents($url_get_coord);
                  
                  
                      // если произошла ошибка при отправке запроса или ответе сервера
                  
                  
                      if(!$result) return false;
                  
                  
                      $result = json_decode($result);
                  
                  
                      // если ни чего не нашлось
                  
                  
                      if(count($result->response->GeoObjectCollection->featureMember) == 0) return false;
                  
                  
                      // получение координат точки
                  
                  
                      $coord = $result->response->GeoObjectCollection->featureMember[0]->GeoObject->Point->pos;
                  
                  
                      return explode(" ", $coord);
                  
                  
                  }
                  
                  
                   
                  
                  
                  /
                  
                  
                  * Получение ближайшего метро по координатам
                  
                  
                  *
                  
                  
                  * @param array - массив с координатами [долгота,  широта]
                  
                  
                  * @return bool | string - false или название ближайшего метро
                  
                  
                  */
                  
                  
                  function getMetroNameByCoord($coord){
                  
                  
                      $coord_str = implode(",", $coord);
                  
                  
                      $url_get_metro = "https://geocode-maps.yandex.ru/1.x/?geocode={$coord_str}&kind=metro&format=json&results=1"; 
                  
                  
                      $result = @file_get_contents($url_get_metro);
                  
                  
                      // если произошла ошибка при отправке запроса или ответе сервера
                  
                  
                      if(!$result) return false;
                  
                  
                      $result = json_decode($result);
                  
                  
                      // если ни чего не нашлось
                  
                  
                      if(count($result->response->GeoObjectCollection->featureMember) == 0) return false;
                  
                  
                      return $result->response->GeoObjectCollection->featureMember[0]->GeoObject->name;
                  
                  
                  }
                  
                  
                   
                  
                  
                  
                  
                  
                   
                  
                  
                   ?>
                  
                  
                   </body>
                  
                  
                  </html>
                  
                  
                
если это весь используемый код, то не хватает ключа доступа к геокодеру яндекса. Ошибка из-за того, что первая функция возвращает false вместо координат
а она возвращает ложи как раз из-за недостатка ключа?
Да, яндекс дает отлуп, функция возвращает false. Подробнее тут - https://yandex.ru/dev/maps/geocoder/
Вот в этом месте и спотыкается всё $result = @file_get_contents($url_get_coord); // если произошла ошибка при отправке запроса или ответе сервера if(!$result) return false;
Обсуждают сегодня