如何使用 Geocoder Php 获取州或省

How to get the State or Province using Geocoder Php

我想使用 Geocoder-php 反转地理编码坐标以获取地址。我可以使用 $geo = app('geocoder')->reverse($lat, $lng)->get().

获取地址集

根据 Geocoder 的 these docs found on github-php,您可以从集合中检索属性,例如使用 $geo->getStreetName() 获取街道名称,使用 $geo->getCity() 获取城市, country by using $geo->getCountry(), etc, 但没有返回州或省的方法。

如何从集合中获取州或省?

我用$geo->getAdminLevels()->get()可以看到省份。哪个returns

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 Geocoder。)

编辑:

$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

解决办法就是这样调用;

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

get() 在此上下文中采用您希望 return.

的索引值

您可能需要检查 getAdminLevels()get(1) return 值是否有时 return 为空值。您可以通过实现 !empty($geo->getAdminLevels())

之类的东西来做到这一点

你可以做到 $geo->getAdminLevels()->get()->adminLevels[0]->name$geo->getAdminLevels()->get()->adminLevels[1]->name