React Native - 如何显示Google Place Photos API返回的图片?

时间:2018-06-09 21:39:50

标签: javascript react-native google-places-api google-places

我开发了一个后端API,它给出了一个位置的纬度和经度,它使用Google Places Photos API

返回城市的图像

我的React Native应用程序调用端点尝试将图像加载到Image视图中。这就是应用程序调用端点并接收响应的方式......

  try {
    let imageResponse = await fetch(
      `https://budgettrip.herokuapp.com/locationimage/${latitude}/${longitude}`
    );
    let response = await imageResponse;
    this.setState({ locationImage: response });
  } catch (error) {
    console.error('location image error', error);
  }

从Google获取图片并将回复发送回我的React Native应用程序的后端代码......

var locationimage = {
    uri: `https://maps.googleapis.com/maps/api/place/photo?photoreference=${photo_reference}&sensor=false&maxheight=1600&maxwidth=1600&key=${process.env.GOOGLE_PLACES_API_KEY}`,
    headers: {
      'User-Agent': 'Request-Promise'
    }
  };

  rp(locationimage)
    .then(function(repos) {
      res.send(repos);
    })
    .catch(function(err) {
      // API call failed...
      res.send(JSON.stringify({ error: 'Could not get image' }));
    })

您可以尝试使用端点查看成功here

时的响应

我不确定如何在Image视图中显示响应中的图像,因为响应不是带有网址或本地文件的网络图像。

1 个答案:

答案 0 :(得分:0)

Photos API返回如下图像:     https://lh4.googleusercontent.com/-1wzlVdxiW14/USSFZnhNqxI/AAAAAAAABGw/YpdANqaoGh4/s1600-w400/Google%2BSydney

您可以在Image组件中使用它,就像使用任何其他网络图像一样:

<Image
  style={styles.image}
  source={{
    uri:'https://lh4.googleusercontent.com/-1wzlVdxiW14/USSFZnhNqxI/AAAAAAAABGw/YpdANqaoGh4/s1600-w400/Google%2BSydney'
  }}
/>

我认为你的情况下的问题是你的回答不是真实的图像,我的意思是如果你在浏览器中点击它,你会看到没有图像只是一些编码的图像数据。尝试在此响应中添加一些内容类型标头,看看它是否有效:

Content-Type: image/svg+xml