谷歌详细介绍了opens_hours

时间:2018-06-05 19:26:05

标签: javascript google-places

我正在尝试为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 个答案:

答案 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 。要获得开放时间,请拨打放置详细信息