我开发了一个后端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
视图中显示响应中的图像,因为响应不是带有网址或本地文件的网络图像。
答案 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