Vas*_*das 1 google-maps google-maps-api-3
有人能告诉我为什么getPlaces()函数返回下面的空格字符串?
在head元素中,我有Google maps脚本的链接
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false&v=3.exp&key=MyKey&libraries=places"></script>
Run Code Online (Sandbox Code Playgroud)
Javascript代码:
jQuery(window).load(function() {
var map = new google.maps.Map(document.getElementById('mapCanvas'), {
mapTypeId: google.maps.MapTypeId.ROADMAP,
streetViewControl: false
});
var defaultBounds = new google.maps.LatLngBounds(
new google.maps.LatLng(41.7033177, -93.0573533),
new google.maps.LatLng(41, -93)
);
map.fitBounds(defaultBounds);
var input = document.getElementById('addressSearch');
var searchBox = new google.maps.places.SearchBox(input);
var markers = [];
google.maps.event.addListener(searchBox, 'places_changed', function() {
var 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 place = places[i];
var marker = new google.maps.Marker({
map: map,
title: place.name,
position: place.geometry.location,
draggable: true
});
markers.push(marker);
bounds.extend(place.geometry.location);
}
map.fitBounds(bounds);
if (markers.length == 1) map.setZoom(17);
});
google.maps.event.addListener(map, 'bounds_changed', function() {
var bounds = map.getBounds();
searchBox.setBounds(bounds);
});
});
Run Code Online (Sandbox Code Playgroud)
此代码来自Google的开发者网站,来自带有文本搜索字段的示例,因此它应该可以正常工作.2天前,它工作正常.现在它没有.问题是该getPlaces()
方法返回一个带空格字符的字符串,而不是它应该返回的数组.我在这里错过了什么?
更新:好的,我的问题不够明确.搜索框中的自动完成功能有什么用处.什么不起作用的是places_changed
事件,特别是线
var places = searchBox.getPlaces();
Run Code Online (Sandbox Code Playgroud)
该places
变量应包含数组,因此,在接下来的for
循环中,它会创建标记的数组,并把它们在地图上.相反,它返回的是一个空字符串.
代替:
var searchBox = new google.maps.places.SearchBox(input);
Run Code Online (Sandbox Code Playgroud)
尝试:
var searchBox = new google.maps.places.Autocomplete(input);
Run Code Online (Sandbox Code Playgroud)
而不是
var places = searchBox.getPlaces();
Run Code Online (Sandbox Code Playgroud)
尝试
var place = searchBox.getPlace();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8902 次 |
最近记录: |