我正在尝试为Google地方信息中的每项业务使用数小时的操作。此示例搜索附近的酒店。在此代码底部附近的try / catch语句中,我尝试检索每个业务的小时数。如果我使用此代码在警报中使用place.name迭代每个业务的名称,它可以正常工作。我在变量'open'上使用警报进行测试。我稍后会将时间发送到DOM中的列表。现在,try / catch语句每次都在捕获。我所在地区的这些业务确实有几个小时的发布时间,所以我期待从地方详细信息中返回数据,并提醒我,我已经获得了这些数据。
var map, infoWindow, bizInfoWindow;
var options = {
center: {lat: 0, lng: 0},
zoom: 14
}
function initMap() {
map = new google.maps.Map(document.getElementById('recMap'), options);
infoWindow = new google.maps.InfoWindow;
bizInfoWindow = new google.maps.InfoWindow;
// Try HTML5 geolocation.
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var pos = {
lat: position.coords.latitude,
lng: position.coords.longitude
};
var windowContent =
'<p>My Location</p>';
infoWindow.setPosition(pos);
infoWindow.setContent(windowContent);
//infoWindow.open(map);
var marker = new google.maps.Marker({
position:pos,
map:map,
icon:'LYNQImages/rainbowFlagIcon.png'
});
map.setCenter(pos);
marker.addListener('click', function(){
infoWindow.open(map, marker);
});
var service = new google.maps.places.PlacesService(map);
service.nearbySearch({
location: pos,
radius: 3000,
type: ['hotel']
}, callback);
}, function() {
handleLocationError(true, infoWindow, map.getCenter());
});
} else {
// Browser doesn't support Geolocation
handleLocationError(false, infoWindow, map.getCenter());
}
}
function callback(results, status) {
if (status === google.maps.places.PlacesServiceStatus.OK) {
for (var i = 0; i < results.length; i++) {
createMarker(results[i]);
createList(results[i]);
}
}
}
function createMarker(place) {
var placeLoc = place.geometry.location;
var marker = new google.maps.Marker({
map: map,
position: place.geometry.location
});
google.maps.event.addListener(marker, 'click', function() {
bizInfoWindow.setContent(place.name);
bizInfoWindow.open(map, this);
});
}
var i = 0;
function createList(place) {
try {
var open = place.opening_hours.periods[i].open.time;
alert(open);
}
catch(e) {
alert("No hours.");
}
i++;
}
答案 0 :(得分:0)
附近的地方api会返回一个地方列表,而营业时间对象如下所示:
"opening_hours" : {
"open_now" : true (boolean value indicating if the place is open at the current time)
}
但要获得开放时间,您需要使用地点ID再次拨打Place Details API。在这里你会得到这样的回复:
opening_hours 包含以下信息:
open_now 是一个布尔值,表示该地点是否在当前时间打开。
期间[] 是一系列开放期,涵盖七天打开包含一对日期和时间对象,用于描述该地点何时打开:日期为0-6的数字,对应于该日期 周。随着 时间可能包含24小时hhmm格式的时间(值在0000-2359范围内)。时间会在这个地方报道 时区。
关闭可能包含一对描述地点关闭时间的日期和时间对象。
要确定,请检查您获得的json响应。
尝试var open = place.opening_hours.toString(); 如果它在请求时打开,则会给 true ,否则 false 。要获得开放时间,请拨打放置详细信息。