未从Google地方自动填充地址获得结果

时间:2014-08-14 05:57:48

标签: google-maps google-maps-api-3 autocomplete google-api google-places-api

我正在使用我当前的项目实施Google Autocomplete Address脚本,我正在尝试使用Google搜索中的关键字查找地点,但我没有得到该结果。 我对任何国家都没有限制。

我对Google代码不满意,所以不明白所以我希望你能帮助我。

我的搜索关键字是(未显示Google结果):

  1. Technodream Training,Ahmedab​​ad,Gujarat,India
  2. Zydus Cadila Healthcare Ltd.,Changodar,Gujarat,India
  3. Crop Production Services Inc
  4. 我的自动填充地址脚本代码:

    HTML:

    <div id="locationField">
        <input id="autocomplete" placeholder="Enter your address" type="text"></input>
    </div>
    <table id="address">
        <tr>
            <td class="label">Street address</td>
            <td class="slimField">
                <input class="field" id="street_number"></input>
            </td>
            <td class="wideField" colspan="2">
                <input class="field" id="route"></input>
            </td>
        </tr>
        <tr>
            <td class="label">City</td>
            <td class="wideField" colspan="3">
                <input class="field" id="locality"></input>
            </td>
        </tr>
        <tr>
            <td class="label">State</td>
            <td class="slimField">
                <input class="field" id="administrative_area_level_1"></input>
            </td>
            <td class="label">Zip code</td>
            <td class="wideField">
                <input class="field" id="postal_code"></input>
            </td>
        </tr>
        <tr>
            <td class="label">Country</td>
            <td class="wideField" colspan="3">
                <input class="field" id="country"></input>
            </td>
        </tr>
        <tr>
            <td class="label">Lat</td>
            <td class="slimField">
                <input type="text" class="field" id="latitude"></input>
            </td>
            <td class="label">Long</td>
            <td class="wideField">
                <input type="text" class="field" id="longitude"></input>
            </td>
        </tr>
    </table>
    

    脚本代码:

    // This example displays an address form, using the autocomplete feature
    // of the Google Places API to help users fill in the information.
    
    $("#autocomplete").on('focus', function () {
        geolocate();
    });
    
    var placeSearch, autocomplete;
    var componentForm = {
        street_number: 'short_name',
        route: 'long_name',
        locality: 'long_name',
        administrative_area_level_1: 'short_name',
        country: 'long_name',
        postal_code: 'short_name'
    };
    
    function initialize() {
        // Create the autocomplete object, restricting the search
        // to geographical location types.
        autocomplete = new google.maps.places.Autocomplete(
        /** @type {HTMLInputElement} */ (document.getElementById('autocomplete')), {
            types: ['geocode']
        });
        // When the user selects an address from the dropdown,
        // populate the address fields in the form.
        google.maps.event.addListener(autocomplete, 'place_changed', function () {
            fillInAddress();
        });
    }
    
    // [START region_fillform]
    function fillInAddress() {
        // Get the place details from the autocomplete object.
        var place = autocomplete.getPlace();
    
        document.getElementById("latitude").value = place.geometry.location.lat();
        document.getElementById("longitude").value = place.geometry.location.lng();
    
        for (var component in componentForm) {
            document.getElementById(component).value = '';
            document.getElementById(component).disabled = false;
        }
    
        // Get each component of the address from the place details
        // and fill the corresponding field on the form.
        for (var i = 0; i < place.address_components.length; i++) {
            var addressType = place.address_components[i].types[0];
            if (componentForm[addressType]) {
                var val = place.address_components[i][componentForm[addressType]];
                document.getElementById(addressType).value = val;
            }
        }
    }
    // [END region_fillform]
    
    // [START region_geolocation]
    // Bias the autocomplete object to the user's geographical location,
    // as supplied by the browser's 'navigator.geolocation' object.
    function geolocate() {
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(function (position) {
                var geolocation = new google.maps.LatLng(
                position.coords.latitude, position.coords.longitude);
    
                var latitude = position.coords.latitude;
                var longitude = position.coords.longitude;
                document.getElementById("latitude").value = latitude;
                document.getElementById("longitude").value = longitude;
    
                autocomplete.setBounds(new google.maps.LatLngBounds(geolocation, geolocation));
            });
        }
    
    }
    
    initialize();
    // [END region_geolocation]
    

    我在Google脚本中获取所有搜索结果:https://www.google.com/maps/place/这是我的JSFiddle工作:http://jsfiddle.net/upsidown/q8XS6/

    感谢。

1 个答案:

答案 0 :(得分:2)

你的JSFiddle工作实际上是我的JSFiddle工作,但是我们不关心它! ; - )

您正在请求types: ['geocode'],根据documentation返回地址

对于企业,您应该使用types: ['establishment'],或者您只需删除该行,您就可以获得所有类型的结果。

希望这有帮助。