В моем случае MongoDB driver 3.5.0
, SLF4j+Log4j12
было достаточно добавить:
log4j.logger.org.mongodb.driver=OFF
в файл конфигурации Log4j .properties
.
Вы должны знать, что веб-сервис API геокодирования также возвращает статус в ответе. Статус показывает, есть ли в ответе действительный элемент или что-то пошло не так, и у вас нет результата.
Просмотрите документацию https://developers.google.com/maps/documentation/geocoding/intro#StatusCodes , и вы увидите, что возможны следующие статусы
Итак, прежде чем пытаться получить доступ к $dataset->results[0]
, сначала проверьте значение $dataset->status
. Если это «ОК», вы можете безопасно получить результаты, в противном случае правильно обработайте код ошибки.
Фрагмент кода может быть
$dataset = json_decode($jsonResponse);
if ($dataset->status == "OK") {
if (isset($dataset->results[0])) {
$latitude = $dataset->results[0]->geometry->location->lat;
$longitude = $dataset->results[0]->geometry->location->lng;
}
} elseif ($dataset->status == "ZERO_RESULTS") {
//TODO: process zero results response
} elseif ($dataset->status == "OVER_DAILY_LIMIT" {
//TODO: process over daily quota
} elseif ($dataset->status == "OVER_QUERY_LIMIT" {
//TODO: process over QPS quota
} elseif ($dataset->status == "REQUEST_DENIED" {
//TODO: process request denied
} elseif ($dataset->status == "INVALID_REQUEST" {
//TODO: process invalid request response
} elseif ($dataset->status == "UNKNOWN_ERROR" {
//TODO: process unknown error response
}
Надеюсь, это поможет!