Google Maps API v3商品库返回undefined utc_offset

时间:2013-10-31 21:59:22

标签: google-maps google-maps-api-3 google-places-api

我正在开发一个时间和位置感知的应用程序和谷歌地图v3 api地方库几乎我需要的一切。但是,当为特定地址执行textSearch()并尝试为返回的PlaceResult项之一调用getDetails()时,getDetails()返回的PlaceResult.utc_offset属性未定义(我需要的所有其他PlaceResult属性都返回正常,只是不是utc_offset)。

这很奇怪,因为如果我为一个像“pizza”这样的通用术语执行textSearch(),然后为返回的PlaceResult项之一调用getDetails(),那么从getDetails()返回的PlaceResult.utc_offset属性将具有一个值

有谁知道为什么会为通用搜索的结果填充utc_offset,但是在搜索特定地址时没有填充,或者我做错了什么?

1 个答案:

答案 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() +
                            "&timestamp=" + 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
}