首页 > 解决方案 > 为什么在 MenaraSolutions/geographer 插件中我无法获得有关美国首都的信息?

问题描述

在 Laravel 8 中,我使用https://github.com/MenaraSolutions/geographer我需要获得任何国家/地区的资金及其纬度/经度,但我无法通过代码获得它:

$selectedCountry = $earth->getCountries()->setLocale('en')->findOne(['code' => strtoupper($next_country_key)]);
\Log::info(  varDump($selectedCountry, ' -1 $selectedCountry::') );
$capital = $selectedCountry->getCapital();
\Log::info(  varDump($capital, ' -1 $capital::') );
$countriesArray[] = [
    'label' => $next_country_label,
    'value' => $next_country_key,
    'geonames_code' => $capital->getGeonamesCode(),
    'lat' => $capital->getLatitude(),
    'lng' => $capital->getLongitude(),
];

我得到错误:

Call to a member function getGeonamesCode() on bool 

作为

$selectedCountry->getCapital() 

返回错误。

检查 $selectedCountry var 的日志内容,我看到:

[2021-04-09 07:26:49] local.INFO:  (Object of MenaraSolutions\Geographer\Country) : -1 $selectedCountry:: : Array
(
    [ * memberClass] => MenaraSolutions\Geographer\State
    [ * exposed] => Array
        (
            [code] => ids.iso_3166_1.0
            [code3] => ids.iso_3166_1.1
            [isoCode] => ids.iso_3166_1.0
            [numericCode] => ids.iso_3166_1.2
            [geonamesCode] => ids.geonames
            [fipsCode] => ids.fips
            [0] => area
            [1] => currency
            [phonePrefix] => phone
            [2] => mobileFormat
            [3] => landlineFormat
            [4] => trunkPrefix
            [5] => population
            [6] => continent
            [language] => languages.0
            [7] => name
        )

    [ * meta] => Array
        (
            [languages] => Array
                (
                    [0] => en
                )

            [ids] => Array
                (
                    [iso_3166_1] => Array
                        (
                            [0] => US
                            [1] => USA
                            [2] => 840
                        )

                    [fips] => US
                    [geonames] => 6252001
                )

            [long] => Array
                (
                    [default] => United States of America
                )

            [short] => Array
                (
                    [default] => United States
                )

            [area] => 9629091
            [currency] => USD
            [phone] => 1
            [trunkPrefix] => 1
            [landLineFormat] => [2-9]\d{9}
            [mobileFormat] => [2-9]\d{9}
            [continent] => NA
            [population] => 310232863
        )

    [ * members] => 
    [ * manager] => MenaraSolutions\Geographer\Services\DefaultManager Object
        (
            [translator:protected] => MenaraSolutions\Geographer\Services\TranslationAgency Object
                (
                    [basePath:protected] => /mnt/_work_sdb8/wwwroot/lar/tAdsBack/vendor/menarasolutions/geographer/resources/
                    [repository:protected] => MenaraSolutions\Geographer\Repositories\File Object
                        (
                            [prefix:protected] => /mnt/_work_sdb8/wwwroot/lar/tAdsBack/vendor/menarasolutions/geographer-data/resources
                            [translationsPrefix:protected] => /mnt/_work_sdb8/wwwroot/lar/tAdsBack/vendor/menarasolutions
                            [cache:protected] => Array
                                (
                                )

                        )

                    [form:protected] => default
                    [inflictsTo:protected] => Array
                        (
                        )

                    [prepositions:protected] => 1
                    [languages:protected] => Array
                        (
                            [ru] => MenaraSolutions\Geographer\Services\Poliglottas\Russian
                            [en] => MenaraSolutions\Geographer\Services\Poliglottas\English
                            [es] => MenaraSolutions\Geographer\Services\Poliglottas\Spanish
                            [it] => MenaraSolutions\Geographer\Services\Poliglottas\Italian
                            [fr] => MenaraSolutions\Geographer\Services\Poliglottas\French
                            [zh] => MenaraSolutions\Geographer\Services\Poliglottas\Mandarin
                            [uk] => MenaraSolutions\Geographer\Services\Poliglottas\Ukrainian
                            [de] => MenaraSolutions\Geographer\Services\Poliglottas\German
                            [nl] => MenaraSolutions\Geographer\Services\Poliglottas\Dutch
                        )

                    [translators:protected] => Array
                        (
                        )

                )

            [repository:protected] => MenaraSolutions\Geographer\Repositories\File Object
                (
                    [prefix:protected] => /mnt/_work_sdb8/wwwroot/lar/tAdsBack/vendor/menarasolutions/geographer-data/resources
                    [translationsPrefix:protected] => /mnt/_work_sdb8/wwwroot/lar/tAdsBack/vendor/menarasolutions
                    [cache:protected] => Array
                        (
                        )

                )

            [language:protected] => en
            [form:protected] => 
            [standard:protected] => iso
            [brief:protected] => 1
            [prepositions:protected] => 1
            [path:protected] => /mnt/_work_sdb8/wwwroot/lar/tAdsBack/vendor/menarasolutions/geographer/resources/
        )

    [ MenaraSolutions\Geographer\Divisible parent] => 
    [ * parentCode] => SOL-III
    [ * standard] => 
)

这个包没有关于美国首都的信息或我的代码有什么问题吗?我在github页面上关注了文档...

"menarasolutions/geographer": "^0.3.9",
"menarasolutions/geographer-laravel": "^0.2.1",
"laravel/framework": "^8.12",

修改块: 我在 github ( https://github.com/MenaraSolutions/geographer/issues/40 ) 上询问并从该软件包的开发人员那里得到了相当奇怪的反馈:

我在代码中修复了该方法并添加了一个测试,但有人必须对 geographer-data repo 提出拉取请求 - 编辑资源/城市/*.json 文件,将“资本”属性添加到相应的条目,例如:“长” :{“默认”:“莫斯科”},“资本”:真,

我知道拉取请求如何与我的项目一起使用,但在这里我不知道如何修复它......你能看看吗?

谢谢!

标签: laravelgeolocation

解决方案


推荐阅读