Google размещает детали
Я пытаюсь использовать часы работы для каждой компании, найденной в 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++;
}
1 ответ
Ближайшие места api возвращает список мест и объект часов работы выглядит так:
"opening_hours" : {
"open_now" : true (boolean value indicating if the place is open at the current time)
}
Но чтобы получить часы работы, вам нужно сделать еще один вызов API сведений о месте с идентификатором места. Здесь вы получите ответ вроде этого:
Открытие_часов содержит следующую информацию:
open_now - логическое значение, указывающее, открыто ли место в текущий момент времени.
period [] - массив периодов открытия, охватывающих семь днейopen содержит пару объектов дня и времени, описывающих, когда место открывается: день число от 0 до 6, соответствующее дням недели. Наряду со временем может содержать время суток в 24-часовом формате ччмм (значения находятся в диапазоне 0000–2359). Время будет сообщено в часовом поясе места.
close может содержать пару дневных и временных объектов, описывающих, когда место закрывается.
Чтобы быть уверенным, проверьте ответ JSON, который вы получите.
Попробуйте var open = place.opening_hours.toString(); Это даст значение true, если оно открыто во время запроса, в противном случае - false. Чтобы узнать время открытия, позвоните, чтобы разместить детали.