Как подключить одну панораму к нескольким панорам, используя API публикации Google Street View?
Я использую запрос photo.update для подключения Panos(360 панорамных изображений) в Python. Я могу подключить только одну панораму к другой, но я хочу подключить одну панораму к нескольким панорам. Я не получаю успешный результат.
Я отправил следующий запрос photoUpdate с использованием Python:
update_photo_url = 'https://streetviewpublish.googleapis.com/v1/photo/{}?key={}&updateMask=connections'.format("pano_1","AIzdesdfyxscvvvvvvvvvvvvvvv")
headers = {"Authorization": "Bearer {}".format("ya29.Glx6BO91jWbjzLQKYPvP16fhT-jyOEnIdnoRcZcU9uYCqzwH3Dkuf-qf_kzUc2ykYOyVTZCfaGjOEAScsJK7WgS4NE9gfS6bSobWDIMdfpfY7SPzRMmxi4kfTrmsRQ"), "Content-Length": "0", "Content-Type": "application/json"}
update_body = {
[
{
"photo": {
"photoId": {
"id": "pano_1"
},
"connections": {
"target": {
"id": "pano_2"
},
"target": {
"id": "pano_3"
}
},
}
}
]
}
update_response = requests.put(update_photo_url,headers=headers,json=update_body)
update_response.text
Ошибка:
{
"error": {
"code": 400,
"message": "Invalid JSON payload received. Unknown name \"\": Root element must be a message.",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.BadRequest",
"fieldViolations": [
{
"description": "Invalid JSON payload received. Unknown name \"\": Root element must be a message."
}
]
}
]
}
}
Кто-нибудь знает о том, как подключить несколько 360 панорамы из исходного панорамы? Было бы очень здорово, если бы кто-то мог прояснить возможность этого. Спасибо заранее.
1 ответ
Я видел, что ваш запрос URL:
https://streetviewpublish.googleapis.com/v1/photo/{}?key={}&updateMask=connections'.format("pano_1","AIzdesdfyxscvvvvvvvvvvvvvvv")
Для того, чтобы соединить несколько фотографий, вам необходимо использовать batchUpdate
метод.
HTTP-запрос
POST https://streetviewpublish.googleapis.com/v1/photos:batchUpdate?
Вот пример запроса с использованием curl:
curl --request POST \
--url 'https://streetviewpublish.googleapis.com/v1/photos:batchUpdate' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"updatePhotoRequests": [
{
"updateMask": "connections",
"photo": {
"photoId": {
"id": "pano_1"
},
"connections": [
{
"target": {
"id": "pano_2"
}
},
{
"target": {
"id": "pano_3"
}
}
]
}
}
]
}'
Обновление: если у меня четыре панорамы и я хочу подключить pano_1 -> pano_2, pano_3 и pano_3 -> pano_4, тогда какой будет формат json?
Вы должны сделать pano_4 своей целью для подключения к pano_3.
{
"updatePhotoRequests": [
{
"updateMask": "connections",
"photo": {
"photoId": {
"id": "pano_3"
},
"connections": [
{
"target": {
"id": "pano_4"
}
},
]
}
}
]
}
Просто отметим, что id
должно быть photoId
загруженной фотографии.