Google Maps Places Address_components不返回街道

Google Maps Places Address_components not returning street

本文关键字:返回 街道 components Maps Places Address Google      更新时间:2023-09-26

有人能告诉我为什么我的fillInAddress()函数不工作吗?在console.log中,它说"未捕获的类型错误:无法读取未定义的属性'0'"我认为我这样做是正确的,但对于我的生活不能弄清楚为什么它不返回"路由"

<script>
            var map;
            var iw = new google.maps.InfoWindow();
            var places;

            function initialize() {
                var markers = [];
                var myOptions = {
                zoom: 1,
                mapTypeId: google.maps.MapTypeId.HYBRID,
                streetViewControl: true
            }
            map = new google.maps.Map(document.getElementById('map-canvas'), myOptions);
            var southWest = new google.maps.LatLng(35.834515,-116.586914);
            var northEast = new google.maps.LatLng(42.947879,-76.311035);
            var bounds = new google.maps.LatLngBounds(southWest,northEast);
            map.fitBounds(bounds);
            var input = (document.getElementById('pac-input'));
            map.controls[google.maps.ControlPosition.TOP_LEFT].push(input);
            var searchBox = new google.maps.places.SearchBox((input));
            google.maps.event.addListener(searchBox, 'places_changed', function() {
                places = searchBox.getPlaces();
                for (var i = 0, marker; marker = markers[i]; i++) {
                    marker.setMap(null);
                }
                markers = [];
                var bounds = new google.maps.LatLngBounds();
                for (var i = 0, place; place = places[i]; i++) {
                    var image = {
                        url: place.icon,
                        size: new google.maps.Size(71, 71),
                        origin: new google.maps.Point(0, 0),
                        anchor: new google.maps.Point(17, 34),
                        scaledSize: new google.maps.Size(25, 25)
                    };
                    var marker = new google.maps.Marker({
                        map: map,
                        icon: image,
                        title: place.name,
                        position: place.geometry.location
                    });
                    markers.push(marker);
                    bounds.extend(place.geometry.location);
                }
                map.fitBounds(bounds);
                fillInAddress();
            });
            google.maps.event.addListener(map, 'bounds_changed', function() {
                var bounds = map.getBounds();
                searchBox.setBounds(bounds);

            });
        }
        function fillInAddress() {
          var components = places.address_components;
          var street = null;
          for (var i = 0, component; component = components[i]; i++) {
            console.log(component);
            if (component.types[0] == 'route') {
              street = component['long_name'];
            }
          }
          alert('Street: ' + street);
        }

这个for循环看起来很奇怪....第一次,组件是空的,因为您刚刚将它创建为一个局部变量,没有任何赋值。所以这个表述(component = components[i])的while部分为假。除非components[i] = null,在这种情况下,下面的代码将出错。

for (var i = 0, component; component = components[i]; i++) {

你不只是想让它:

for (var i = 0, component; i < components.length; i++) {
    component = components[i]        
    console.log(component);
    if (component.types[0] == 'route') {
       street = component['long_name'];
    }
}