如何从谷歌地图自动完成结果获得lat long的第一个选项

时间:2015-10-21 10:55:39

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

我正在尝试从模糊事件的Google地图自动填充字段以及自动填充字段中的 place_changed 获得第一个结果,并部分成功。

但是我遇到了一个问题,当模糊事件被触发时,我从自动完成字段中的第一个选项获得第一个结果,但结果不正确,所以我没有得到确切的lat长。

例如,如果我搜索单词" Nimblechapps"结果来自place_change事件是" Nimblechapps私人有限公司,Prahlad Nagar,艾哈迈达巴德,印度古吉拉特邦" ,但是当模糊事件被解雇时,我得到的结果是 " Nimblechapps Pvt LtdPrahlad Nagar,Ahmedab​​ad,Gujarat,India" 。您可以看到两个结果的差异。在 Pvt之后,有一点点逗号。有限公司即可。

以下是我的代码来实现它。我参考了here

autocomplete = new google.maps.places.Autocomplete((document.getElementById('location')),{types: []});
google.maps.event.addListener(autocomplete, 'place_changed', onPlaceChanged);
$('#location').on('blur', function () {
    var firstResult = $(".pac-container .pac-item:first").text();
    geocoder.geocode({"address": firstResult}, function (results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            infoWindow.close();
            marker.setVisible(false);
            var place = results[0];
            if (!place.geometry) {
                return;
            }

            if (place.geometry.viewport) {
                map.fitBounds(place.geometry.viewport);
            } else {
                map.setCenter(place.geometry.location);
                map.setZoom(12);
            }
            $('#lat').html(place.geometry.location.lat());
            $('#long').html(place.geometry.location.lng());
            $('#fLat').val(place.geometry.location.lat());
            $('#fLong').val(place.geometry.location.lng());
            marker.setPosition(place.geometry.location);
            marker.setVisible(true);

            var address = '';
            console.log(place.geometry.location.toString());
            if (place.address_components)
            {
                address = [
                    (place.address_components[0] && place.address_components[0].short_name || ''),
                    (place.address_components[1] && place.address_components[1].short_name || ''),
                    (place.address_components[2] && place.address_components[2].short_name || '')
                ].join(', ');
            }

            $('#location').val(firstResult);
            infoWindow.close();
            infoWindow.setContent('<div><strong>' + place.name + '</strong><br>' + address);
            infoWindow.open(map, marker);
            infoWindow.close();

        }
    });
});

修改: var firstResult = $(".pac-container .pac-item:first").text();

我在firstResult变量中得到错误的结果

0 个答案:

没有答案