Google Maps Places Address_components不返回街道
Google Maps Places Address_components not returning street
有人能告诉我为什么我的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'];
}
}
相关文章:
- 节点导出返回一个空对象
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 控制台返回var不是't定义,但它是
- 从函数返回角度承诺
- Javascript返回值只在循环中返回一次
- 从控制器返回后Ajax启动事件激发
- CKFinder 3为所选文件返回错误的URL
- 如何在d3.js中返回路径的y坐标
- 如何从jquery函数返回变量
- Angular js-返回一个包含类似
- JSONP请求返回结果,但也触发error_callback
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- JS验证ajax返回的html中的表单数据
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 英国邮政编码谷歌API不返回街道地址
- 从 jquery 地址选择器返回街道名称
- 地理编码器 API 仅返回街道地址
- Google Maps Places Address_components不返回街道