gpt4 book ai didi

javascript - 从 GoogleMaps 客户端响应中获取 Google Place Photo 的 URL

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:30:31 26 4
gpt4 key购买 nike

我正在构建一个 API 端点,它将使用 express.js 和 Node.js client library for Google Maps API Web Services 返回 Google 地点的详细信息和单张照片。 .下面的端点返回一个地方的详细信息,我在检索照片的 URL 时遇到了问题。以下是有问题的代码。

Google map 客户端有两个请求:

  1. 根据req.params.id获取地点详情,详情包含一个photos数组
  2. 使用上面的photo_reference获取照片

    var googleMapsClient = require('@google/maps').createClient({
    key: 'mykeyhere',
    Promise: Promise
    });

    exports.getGglPlace = function(req, res) {

    googleMapsClient.place({
    placeid: req.params.id
    }).asPromise()
    .then((response) => {
    var venue = response.json.result

    if (venue.photos[0]) {
    googleMapsClient.placesPhoto({
    photoreference: venue.photos[0].photo_reference,
    maxwidth: 200
    }).asPromise()
    .then((photo) => {

    console.log("Photo:", photo); // this returns a massive chunk of data which I think contains the actual image object also
    venue.photoURL = photo.url; // this doesn't work

    res.send(venue);
    })
    .catch((err)=>{
    console.log("Error Getting Photo!", err);
    res.send(venue);
    })
    } else {
    res.send(venue);
    }
    })
    .catch((err) => {
    res.send(404);
    })
    }

知道如何从上面代码中称为 photo 的响应中获取 URL 吗?

如果我尝试通过浏览器或 Postman 直接访问 API,URL 将被重定向到图像的实际源 URL,这就是我想要添加到我的 venue 对象中的内容。

API 请求示例:https://maps.googleapis.com/maps/api/place/photo?maxwidth=400&photoreference=CmRaAAAA8NPP1nJJ7RCzcQDGUrpBHJXlzlQkN74dcyQJ2ytVpeYIu47sR-8dfCjke1J5exP-HpkayaXOc26ShsVKkXOaJZBOdpmExUfCzUTIBN3x0uPfR5Nt3PnN-a3GoRVZ7YxKEhBvqXF356Tn9mBJ7lA_JQ_7GhQMKvZkOk-Rs9knsansx5yuhfIvsQ&sensor=false&key=mykeyhere

重定向到(这是我希望 photo.url 返回的):https://lh3.googleusercontent.com/p/AF1QipPVD12HA5FBnjmiqVLphYgjfPtIPydn4Ie-xGKr=s1600-w200

感谢任何帮助。

附言我在这里的第一篇文章 - 如果我的问题不够清楚,抱歉。

最佳答案

我是这样解决的。它看起来并不完美,但它完成了工作。

响应包含一个 req 部分,其中包含我能够用来构建 URL 的键。具体来说,response.req.socket._host 键和 response.req.path 键。

这是它在我的代码中的样子(其中 photo 是来自 google API 的响应)

venue.photoURL = "https://"+ photo.req.socket._host + photo.req.path;

photo.req.socket._host 给我 lh3.googleusercontent.com

photo.req.path 给我 /p/AF1QipPVD12HA5FBnjmiqVLphYgjfPtIPydn4Ie-xGKr=s1600-w200

照片的构建 URL 的结果是:https://lh3.googleusercontent.com/p/AF1QipPVD12HA5FBnjmiqVLphYgjfPtIPydn4Ie-xGKr=s1600-w200

关于javascript - 从 GoogleMaps 客户端响应中获取 Google Place Photo 的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47484939/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com