如何使用地理编码API中的邮政编码获取城市州和国家/地区

时间:2019-11-22 22:41:38

标签: javascript laravel-5 geocode

每当我在我的文本字段中输入邮政编码时,我都面临着有关地理编码的问题,这是我唯一能获取的美国城市州和国家/地区。当我放入任何其他邮政编码时,它不起作用。我认为我的脚本来源存在问题。有人可以帮我解决这个问题吗?

<script language="javascript" src="https://maps.google.com/maps/api/js? 
       sensor=false&key=my_api">
</script>
<script>
    function getLocation() {
        getAddressInfoByZip(document.getElementById('zip_id').value);
    }

    function response(obj) {
        console.log(obj);
    }

    function getAddressInfoByZip(zip) {
        if (zip.length >= 5 && typeof google != 'undefined') {
            var addr = {};
            var geocoder = new google.maps.Geocoder();
            geocoder.geocode({
                'address': zip
            }, function (results, status) {
                if (status == google.maps.GeocoderStatus.OK) {
                    if (results.length >= 1) {
                        for (var ii = 0; ii < results[0].address_components.length; ii++) {
                            var street_number = route = street = city = state = zipcode = country = formatted_address = '';
                            var types = results[0].address_components[ii].types.join(",");
                            if (types == "street_number") {
                                addr.street_number = results[0].address_components[ii].long_name;
                            }
                            if (types == "route" || types == "point_of_interest,establishment") {
                                addr.route = results[0].address_components[ii].long_name;
                            }
                            if (types == "sublocality,political" || types == "locality,political" || types == "neighborhood,political" || types == "administrative_area_level_3,political") {
                                addr.city = (city == '' || types == "locality,political") ? results[0].address_components[ii].long_name : city;
                            }
                            if (types == "administrative_area_level_1,political") {
                                addr.state = results[0].address_components[ii].short_name;
                            }
                            if (types == "postal_code" || types == "postal_code_prefix,postal_code") {
                                addr.zipcode = results[0].address_components[ii].long_name;
                            }
                            if (types == "country,political") {
                                addr.country = results[0].address_components[ii].long_name;
                            }
                        }
                        document.getElementById('country').value = addr.country;
                        document.getElementById('state').value = addr.state;
                        document.getElementById('city').value = addr.city;
                        addr.success = true;
                        for (name in addr) {
                            console.log('### google maps api ### ' + name + ': ' + addr[name]);
                        }
                        response(addr);
                    }
                    else {
                        response({
                            success: false
                        });
                    }
                }
                else {
                    response({
                        success: false
                    });
                }
            });
        }
        else {
            response({
                success: false
            });
        }
    }
</script>

0 个答案:

没有答案