【问题标题】:Issue with "open_now" of google place apigoogle place api的“open_now”问题
【发布时间】:2020-08-15 22:46:04
【问题描述】:

您好,我正在使用google map api和google places api,并且我大量遇到这个问题。事实上,每次调用 google places api:

“open_now 自 2019 年 11 月起已弃用,将于 2020 年 11 月关闭。使用 PlacesService.getDetails() 中的 isOpen() 函数”

我阅读了文档并进行了一些研究,但被告知我不应该使用 open_now。

我的项目中没有使用 open_now 或 isOpen()

谁来解决这个问题?

const map = store.state.map;
const google = store.state.google;
const service = new google.maps.places.PlacesService(map);
const center = map.getCenter();
const nearbySearchRequest = {
  location: center,
  radius: 650,
  types: ["restaurant"]
};

function nearbySearchCallback(results, status) {
const API_KEY = firebaseConfig.apiKey;
if (status == 'OK') {
  let restaurants = results;

  restaurants.forEach((restaurant, i) => {
    // For each restaurant, we get the reviews
    function getDetailsCallback(reviews) {
      restaurant.reviews = reviews;
    }

    const getDetailsRequest = {
      fields: ["reviews"],
      placeId: restaurant.place_id
    };
    service.getDetails(getDetailsRequest, getDetailsCallback);


    //For each restaurant, we get the image
    const lat = restaurant.geometry.location.lat();
    const lng = restaurant.geometry.location.lng();
    restaurant.img = `https://maps.googleapis.com/maps/api/streetview?size=150x150&location=${lat},${lng}&key=${API_KEY}`;
  });

  store.commit("UPDATE_RESTAU", restaurants);
  setMarkers();
}
}

service.nearbySearch(nearbySearchRequest, nearbySearchCallback);

【问题讨论】:

标签: google-maps google-places-api


【解决方案1】:

我从未使用过“open_now()”函数。我创建了一些不可见的文本框来根据当前日期/时间保持打开或关闭状态。然后我添加了一些 javascript 来根据日期/时间、假期和周末填充这些文本框。最后,我向我的对象数组(在本例中为 airports)添加了一个函数,以从文本框中获取打开/关闭状态的值。

我认为通过向您展示示例可以更好地解释这一点。这是我放置它的 CodePen 的链接。有时它在 CodePen 上运行良好,有时却不行。但是,如果您只是下载该项目并从您的计算机上运行它,它总是很有效。或者,只需从笔中复制/粘贴“html、css 和 javascript”。

https://codepen.io/pailwriter/pen/MWyevGO

请将 API 密钥替换为您自己的。

您可以将 javascript 页面上的 3 个部分拆分为 3 个不同的 js 页面。只需记下它们在 html 页面的“head”部分中的顺序,按该顺序调用它们。

这里快速浏览一下要使用的 JavaScript 日期/时间。

var today = new Date();
var dateNow = today.getFullYear()+','+(today.getMonth()+1)+','+today.getDate();
var holidays = (
            '2020,1,1', 
            '2020,1,20', 
            '2020,2,17',
            '2020,5,25',
            '2020,7,3',
            '2020,9,7',
            '2020,10,12',
            '2020,11,11',
            '2020,11,26',
            '2020,12,25'
            );
var d = new Date();
  var weekday = new Array(7);
  weekday[0] = "Sunday";
  weekday[1] = "Monday";
  weekday[2] = "Tuesday";
  weekday[3] = "Wednesday";
  weekday[4] = "Thursday";
  weekday[5] = "Friday";
  weekday[6] = "Saturday";

  var n = weekday[d.getDay()];
  
// Start Clock - H:m only
setInterval(function(){
  var tdate = new Date();
  var tformat = [
      ("0" + tdate.getHours()).substr(-2)
    , ("0" + tdate.getMinutes()).substr(-2)
  ].join(":");

//Based on current date/time, populate the "invisible" text boxes on the index.html page. *********************************
    // Open/Closed status for Monday through Friday only
                if (tformat > '09:00' && tformat < '17:00' && n != "Sunday" && n != "Saturday" && holidays != dateNow) {
                    document.getElementById("Shift1").innerHTML = "Open";
                    document.getElementById("Shift1").value = "Open";
                }
                else {
                    document.getElementById("Shift1").innerHTML = "Closed";
                    document.getElementById("Shift1").value = "Closed"; 
                }

    // Open/Closed status for Monday - Saturday
                if (n == "Saturday" && tformat > '08:00' && tformat < '17:00' && holidays != dateNow || n != "Saturday" && n != "Sunday" && holidays != dateNow && tformat > '09:00' && tformat < '13:00') {
                    document.getElementById("Shift2").innerHTML = "Open";
                    document.getElementById("Shift2").value = "Open"; 
                }  
                else {
                    document.getElementById("Shift2").innerHTML = "Closed";
                    document.getElementById("Shift2").value = "Closed"; 
                }       
// Main Branch Hours Only ********************************* End *****************************************************
                            
// This is the closing tag for all the time/date options above. Do not remove. 
}, 100);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    • 2021-07-12
    相关资源
    最近更新 更多