我正在开发一个时间和位置感知应用程序,谷歌地图 v3 api 地点库几乎拥有我需要的一切。 但是,当对特定地址执行 textSearch() 并尝试为返回的 PlaceResult 项目之一调用 getDetails() 时,从 getDetails() 返回的 PlaceResult.utc_offset 属性未定义(我需要的所有其他 PlaceResult 属性都返回正常) ,只是不是 utc_offset)。
这很奇怪,因为如果我对“披萨”这样的通用术语执行 textSearch(),然后对返回的 PlaceResult 项之一调用 getDetails(),则从 getDetails() 返回的 PlaceResult.utc_offset 属性将具有一个值。
有谁知道为什么 utc_offset 被填充为通用搜索的结果,但在搜索特定地址时却没有填充,或者我做错了什么?
正如您所提到的,仅当存在“披萨”等通用术语时才有效。我所做的是,如果未定义,我会调用 Google TimeZone API 来获取信息。我在下面放置了一个代码示例,但您也可以在 GitHub 上查看我的解决方案,https://github.com/pushpickup/pushpickup/blob/master/client/views/games/creategame/select-location.js #L13
if (place.utc_offset === void 0) {
timeStamp = (Date.now() || new Date().getTime())/1000;
timeZoneApiRequestUrl = "https://maps.googleapis.com/maps/api/timezone/json?location=" +
place.geometry.location.lat() + "," + place.geometry.location.lng() +
"×tamp=" + timeStamp + "&key=YOUR_API_KEY"
$.get(timeZoneApiRequestUrl, function( data ) {
var utcOffset = (data.rawOffset + data.dstOffset || 0) / 3600;
console.log("UTC offset is " + utcOffset + " hours")
}); // expand this to handle errors, just doing a get with success for now as a POC
}