我正在开发一个时间和位置感知的应用程序和谷歌地图v3 api地方库几乎我需要的一切。但是,当为特定地址执行textSearch()并尝试为返回的PlaceResult项之一调用getDetails()时,getDetails()返回的PlaceResult.utc_offset属性未定义(我需要的所有其他PlaceResult属性都返回正常,只是不是utc_offset)。
这很奇怪,因为如果我为一个像“pizza”这样的通用术语执行textSearch(),然后为返回的PlaceResult项之一调用getDetails(),那么从getDetails()返回的PlaceResult.utc_offset属性将具有一个值
有谁知道为什么会为通用搜索的结果填充utc_offset,但是在搜索特定地址时没有填充,或者我做错了什么?
答案 0 :(得分:1)
正如你所提到的,只有像#34; pizza"这样的通用术语才有用。我所做的是如果它未定义,我会调用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
}