Я хочу изменить координаты геокодирования, чтобы получить адрес с помощью Geocoder-php. Я могу получить коллекцию адресов, используя $geo = app('geocoder')->reverse($lat, $lng)->get().

Согласно этим документам, найденным на github для Geocoder- php вы можете получить свойства из коллекции, например, название улицы с помощью $geo->getStreetName(), город с помощью $geo->getCity(), страну с помощью $geo->getCountry() и т. д., но методов для возвращая штат или провинцию.

Как получить штат или провинцию из коллекции?

Я вижу провинцию, когда использую $geo->getAdminLevels()->get(). Который возвращается

AdminLevelCollection {#900 ▼
  -adminLevels: array:2 [▼
    1 => AdminLevel {#901 ▼
      -level: 1
      -name: "Saskatchewan"
      -code: "SK"
    }
    2 => AdminLevel {#902 ▼
      -level: 2
      -name: "Division No. 16"
      -code: "Division No. 16"
    }
  ]
}

Но я не могу захватить провинцию (Саскачеван).

(Я использую Laravel Geocoder для проекта Laravel.)

РЕДАКТИРОВАТЬ:

$geo->getAdminLevels()->get(1) дай мне это

AdminLevel {#690 ▼
  -level: 1
  -name: "Saskatchewan"
  -code: "SK"
}

Но $geo->getAdminLevels()->get(1)->name; дай мне эту ошибку

Undefined property: Geocoder\Provider\GoogleMaps\Model\GoogleAddress::$getAdminLevels
0
xslibx 11 Апр 2019 в 09:44

2 ответа

Лучший ответ

Решение этой проблемы - назвать это так;

$geo->getAdminLevels()->get(1)->getName();

get() в этом контексте принимает значение индекса, который вы хотите вернуть.

Возможно, вы захотите проверить, что getAdminLevels() и get(1) возвращают значения, если они иногда могут возвращать нули. Вы можете сделать это, реализовав что-то вроде !empty($geo->getAdminLevels())

1
Simon R 16 Апр 2019 в 06:30

Ты можешь сделать $geo->getAdminLevels()->get()->adminLevels[0]->name или $geo->getAdminLevels()->get()->adminLevels[1]->name

0
gpasci 11 Апр 2019 в 22:59