Как получить штат или провинцию, используя Geocoder Php - PullRequest
0 голосов
/ 11 апреля 2019

Я хочу изменить координаты геокода, чтобы получить адрес с помощью 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 для проекта 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

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

Решение этого состоит в том, чтобы назвать это так;

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

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

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

0 голосов
/ 12 апреля 2019

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

...