В этой части вашего кода проблема заключается в следующем:
)['results'][0]['geometry']['location']
Вы предполагаете, что всегда будет результат в позиции 0 (первый элемент). В случае ошибки массив результатов будет пустым, и, следовательно, результат в позиции 0.
Структура результатов API не изменилась. Google не сделал бы этого, поскольку это сломало бы МНОГО приложений. Скорее всего, определенный набор входных данных, например, неверный адрес, выдает сообщение об ошибке.
Посмотрите документацию здесь . Обратите внимание на поле "status"
, которое содержит различные коды состояния . Вы должны изменить свой код на только попытаться получить элемент из результата, если статус "OK"
.
Что касается часового пояса, вы должны проверить там код состояния также. ( Вот документы. ) Тогда в большинстве случаев вы должны взять timeZoneId
вместо rawOffset
. Вы можете использовать этот идентификатор со встроенными функциями часового пояса PHP (DateTime
, DateTimeZone
классы и т. Д. c. ).