我想使用Geocoder-php反转地理编码坐标以获取地址。我可以使用$geo = app('geocoder')->reverse($lat, $lng)->get()
获取地址集合。
根据these docs found on 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
对此的解决方案是这样称呼它;
$geo->getAdminLevels()->get(1)->getName();
在此上下文中,get()
将获取您希望返回的索引的值。
您可能想要检查getAdminLevels()
和get(1)
是否返回值,如果它们有时可能返回空值。你可以通过实现像!empty($geo->getAdminLevels())
这样的东西来做到这一点
你可以做$geo->getAdminLevels()->get()->adminLevels[0]->name
或$geo->getAdminLevels()->get()->adminLevels[1]->name