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. Чтобы узнать время открытия, позвоните, чтобы разместить детали.

Другие вопросы по тегам