Geocoding 如何使用反向地理编码为Mapbox获取城市/州/国家?

Geocoding 如何使用反向地理编码为Mapbox获取城市/州/国家?,geocoding,mapbox,Geocoding,Mapbox,我已经阅读了这个API,并根据一些示例测试了很多坐标 这是一个提供了大量信息的例子,问题是没有简单的方法来获取我能够找到的城市、州和国家 我可以得到这样的结果 麦克莱恩,22102,弗吉尼亚州,美国 旧金山,94103,加利福尼亚州,美国 伦敦,SW1H6,英国威斯敏斯特市 旧金山,94114,加利福尼亚州,美国 珀斯,6053,西澳大利亚,澳大利亚 问题是,然后我必须找出如何解析每个国家的邮政编码(不合理) 我觉得这可能是错误的终点。我在某一点上找到了,但它只会返回国家名称 关于如何从Ma

我已经阅读了这个API,并根据一些示例测试了很多坐标

这是一个提供了大量信息的例子,问题是没有简单的方法来获取我能够找到的城市、州和国家

我可以得到这样的结果

麦克莱恩,22102,弗吉尼亚州,美国

旧金山,94103,加利福尼亚州,美国

伦敦,SW1H6,英国威斯敏斯特市

旧金山,94114,加利福尼亚州,美国

珀斯,6053,西澳大利亚,澳大利亚

问题是,然后我必须找出如何解析每个国家的邮政编码(不合理)

我觉得这可能是错误的终点。我在某一点上找到了,但它只会返回国家名称


关于如何从Mapbox反向地理编码api查找中获取城市/州/国家数据,有什么指导吗?

我最后根据Mapbox返回的内容提出了这个函数。根节点给出城镇/城市,然后给出其周围的上下文。这是一个在重建字符串时检查哪个上下文是邮政编码并排除它的问题

                //builds proper format of location string based on mapbox data. city,state/province,country
                function parseReverseGeo(geoData) {
                    // debugger;
                    var region, countryName, placeName, returnStr;
                    if(geoData.context){
                        $.each(geoData.context, function(i, v){
                            if(v.id.indexOf('region') >= 0) {
                                region = v.text;
                            }
                            if(v.id.indexOf('country') >= 0) {
                                countryName = v.text;
                            }
                        });
                    }
                    if(region && countryName) {
                        returnStr = region + ", " + countryName;
                    } else {
                        returnStr = geoData.place_name;
                    }
                    return returnStr;
                }

同上。当我使用设置来自geocoder结果数据的输入字段时,我将使用此格式

        placeName = geoData.place_name.split(',');
        $('#addressLine1').val(placeName[1]);

            if(v.id.indexOf('region') >= 0) {
                region = v.text;
                $('input[name="vstate"]').val(region);
            }
            if(v.id.indexOf('postcode') >= 0) {
                postcode = v.text;
                $('input[name="vpostalCode"]').val(postcode);
            }
            if(v.id.indexOf('place') >= 0) {
                city = v.text;
                $('input[name="vcity"]').val(city);
            }               
            if(v.id.indexOf('country') >= 0) {
                countryName = v.text;
                if (countryName.indexOf('United States') > 0) {
                    $('input[name="vcountry"]').val("US");
                }
                if (countryName.indexOf('Canada') > 0) {
                    $('input[name="vcountry"]').val("CA");
                }
                else {
                    $('input[name="vcountry"]').val("US");
                }
            }