Google Latitude API 返回 0 个位置历史记录结果

Posted

技术标签:

【中文标题】Google Latitude API 返回 0 个位置历史记录结果【英文标题】:Google Latitude API returns 0 results for location history 【发布时间】:2012-08-26 15:51:59 【问题描述】:

我正在尝试使用 Google Latitude API 的 v1(通过 OAuth 2.0)检索我的位置历史记录,特别是 list 方法。

当尝试检索两个时间戳之间的记录时,我没有返回任何位置。但是,我可以检索我最近的位置(约 860 个,仅在过去 24 小时内)。尝试检索与“最近”集中返回的位置相同的时间段内的位置也会返回零结果。

有谁知道我在这里做错了什么,或者问题出在纬度上吗?我可以通过这种方式检索我的位置记录吗?

已解决:指定的开始和结束时间戳需要以毫秒为单位

以下是我用来帮助将datetime 对象转换为毫秒的一些函数:

def dt_from_epoch(epoch):
    epoch = int(epoch)
    secs = epoch/1000
    mils = epoch - (secs*1000)

    dt = datetime.datetime.fromtimestamp(secs)
    dt.replace(microsecond=mils*1000)
    return dt

def dt_to_mils(dt):
    return int((time.mktime(dt.timetuple())*1000) + (dt.microsecond/1000))

原始示例

测试用例脚本:

# Service obtained in the usual OAuth 2.0 way using oauth2client and
# apiclient.discovery.build.
# Scope used: https://www.googleapis.com/auth/latitude.all.best

print "## Retrieve most recent history"
locs = service.location().list(granularity='best', max_results=1000).execute()
first = locs['items'][len(locs['items'])-1]
last= locs['items'][0]

first = datetime.datetime.fromtimestamp(int(first['timestampMs'][:-3]))
last = datetime.datetime.fromtimestamp(int(last['timestampMs'][:-3]))

print "%s - %s: %d" % (first.strftime('%Y-%m-%d %H:%M:%S'),
    last.strftime('%Y-%m-%d %H:%M:%S'), len(locs['items']))


print "## Retrieve history between %s and %s" % (
    first.strftime('%Y-%m-%d %H:%M:%S'), last.strftime('%Y-%m-%d %H:%M:%S'))

locs = service.location().list(
    granularity='best',
    min_time=int(time.mktime(first.timetuple())),
    max_time=int(time.mktime(last.timetuple())),
    max_results=1000
).execute()

results = len(locs['items']) if 'items' in locs else 0
print "%s - %s: %d" % (first.strftime('%Y-%m-%d %H:%M:%S'),
    last.strftime('%Y-%m-%d %H:%M:%S'), results)

脚本输出:

## Retrieve most recent history
2012-08-25 23:02:12 - 2012-08-26 15:37:09: 846
## Retrieve history between 2012-08-25 23:02:12 and 2012-08-26 15:37:09
2012-08-25 23:02:12 - 2012-08-26 15:37:09: 0

“最近历史”的 JSON 输出:


  "data": 
    "kind": "latitude#locationFeed",
    "items": [
      
        "kind": "latitude#location",
        "timestampMs": "1345995443316",
        "latitude": (latitude),
        "longitude": (longitude)
      ,
    (continues...)
    ]
  

“X 和 Y 之间的历史”的 JSON 输出:


 "data": 
    "kind": "latitude#locationFeed"
  

【问题讨论】:

【参考方案1】:

看起来您以秒而不是毫秒(自纪元以来)传递。具体来说,请注意您如何用 [:-3] 除以 1000...

【讨论】:

以上是关于Google Latitude API 返回 0 个位置历史记录结果的主要内容,如果未能解决你的问题,请参考以下文章

通过 Oauth2.0 向 Google Latitude API 发送用户新位置

Latitude Checkout API 使用 curl 返回 string(0) ""

是否可以创建使用 Google Latitude API 的 Android 应用程序?

通过 JSON 在 Google latitude API 中获取经过身份验证的用户的过去签到

带有目标 c 的 Google Latitude API

是否有任何已发布的实施适用于 Android 的 Google Latitude API 的示例? [关闭]