HERE地图API:并非所有项都具有PVID

8

我将使用HERE Places API进行翻译。

首先,我会进行搜索。

例如,这个查询:

https://places.cit.api.here.com/places/v1/discover/search?q=Test&at=35.6111,-97.5467&r=500&size=1&app_id=DemoAppId01082013GAL&app_code=AJKnXv84fjrb0KIHawS0Tg&show_refs=pvid&pretty

根据此文档(链接),如果我在查询字符串中添加show_refs=pvid,则会在结果中获得外部id,可以用它来查询查找终点。
但是我收到的响应如下:
    {
    "results": {
        "next": "https://places.cit.api.here.com/places/v1/discover/search;context=Zmxvdy1pZD1hY2ExNzk3NC0zYzg3LTU5NzQtYmZkMC04YjAzMDZlYWIzMWJfMTUwNjA3NjMzMTYyMl83NDY3XzM4NTAmb2Zmc2V0PTEmc2l6ZT0x?at=35.6111%2C-97.5467&q=Test&app_id=DemoAppId01082013GAL&app_code=AJKnXv84fjrb0KIHawS0Tg",
        "items": [
            {
                "position": [
                    35.60369,
                    -97.51761
                ],
                "distance": 2756,
                "title": "Southwest Test & Balance",
                "averageRating": 0,
                "category": {
                    "id": "business-services",
                    "title": "Business & Services",
                    "href": "https://places.cit.api.here.com/places/v1/categories/places/business-services?app_id=DemoAppId01082013GAL&app_code=AJKnXv84fjrb0KIHawS0Tg",
                    "type": "urn:nlp-types:category",
                    "system": "places"
                },
                "icon": "https://download.vcdn.cit.data.here.com/p/d/places2_stg/icons/categories/02.icon",
                "vicinity": "200 NW 132nd St<br/>Oklahoma City, OK 73114",
                "having": [],
                "type": "urn:nlp-types:place",
                "href": "https://places.cit.api.here.com/places/v1/places/8403fv6k-d1b2fde0616e0326e321a54b88cd9f53;context=Zmxvdy1pZD1hY2ExNzk3NC0zYzg3LTU5NzQtYmZkMC04YjAzMDZlYWIzMWJfMTUwNjA3NjMzMTYyMl83NDY3XzM4NTAmcmFuaz0w?app_id=DemoAppId01082013GAL&app_code=AJKnXv84fjrb0KIHawS0Tg",
                "id": "8403fv6k-d1b2fde0616e0326e321a54b88cd9f53",
                "authoritative": true
            }
        ]
    },
    "search": {
        "context": {
            "location": {
                "position": [
                    35.6111,
                    -97.5467
                ],
                "address": {
                    "text": "Oklahoma City, OK 73134<br/>USA",
                    "postalCode": "73134",
                    "city": "Oklahoma City",
                    "county": "Oklahoma",
                    "stateCode": "OK",
                    "country": "United States",
                    "countryCode": "USA"
                }
            },
            "type": "urn:nlp-types:place",
            "href": "https://places.cit.api.here.com/places/v1/places/loc-dmVyc2lvbj0xO3RpdGxlPU9rbGFob21hK0NpdHk7bGF0PTM1LjYxMTE7bG9uPS05Ny41NDY3O2NpdHk9T2tsYWhvbWErQ2l0eTtwb3N0YWxDb2RlPTczMTM0O2NvdW50cnk9VVNBO3N0YXRlQ29kZT1PSztjb3VudHk9T2tsYWhvbWE7Y2F0ZWdvcnlJZD1jaXR5LXRvd24tdmlsbGFnZTtzb3VyY2VTeXN0ZW09aW50ZXJuYWw;context=c2VhcmNoQ29udGV4dD0x?app_id=DemoAppId01082013GAL&app_code=AJKnXv84fjrb0KIHawS0Tg"
        }
    }
}

对于“没有引用”的响应

这是一个错误,还是每个位置都没有这个外部ID?

2个回答

1

我是HERE Places API团队的成员,作为回应。

是的,并不是每个地方都有一个pvid。因此,我建议使用共享ID代替。我意识到文档需要改进以澄清这一点。

分享ID可以通过在搜索查询地点详情请求中添加show_refs=sharing来获取。它可以在references字段中找到。一旦您获得了共享ID,您就可以像预期的那样使用查找端点。

谢谢您的回复。我已经尝试了那个请求,搜索很好用,但是我不知道如何使用共享ID来进行详细请求... 之前我曾经向lookup端点发出请求,但现在你展示的例子是像/places/v1/places/{sharingId}这样的。如果没有上下文,它是无法工作的。您能否给我一个链接,告诉我如何正确构建详细请求。谢谢。 - demo
1
可能是由于查找终端点返回的302重定向引起的混淆,大多数浏览器会自动跟随。这就是为什么即使您通过跟随我的链接发出了查找请求,您在URL栏中看到/places/v1/places。因此,在您的应用程序中,您可以执行以下操作:places.cit.api.here.com/places/v1/places/lookup?source=sharing&id=omitted,然后您将被重定向(HTTP 302)到已解决的地点详细信息。 - cio
是的,谢谢,现在好多了 :) 顺便说一下,我可以通过placeId获取位置详情(不共享id),只需将 &source=sharing 包含在查询字符串中即可。这也正确吗? - demo
我更倾向于依赖 sharing-id 查找,因为它包含更多信息,并且专门设计用于在位置 id 中存储 id drifts。 - cio

0

请看:

https://places.cit.api.here.com/places/v1/places/8403fv6k-d1b2fde0616e0326e321a54b88cd9f53;context=Zmxvdy1pZD00YWU2ZWZjNi01ZjgzLTUwYTQtOTI4OS0xZjliMGMwNWY3NjBfMTUwNzA0NDE0OTc3NV84MTI5XzU1NDcmcmFuaz0w?app_id=DemoAppId01082013GAL&app_code=AJKnXv84fjrb0KIHawS0Tg&show_refs=pvid

https://places.cit.api.here.com/places/v1/places/8409q8yy-6af3c3e50bcb4f859686797b2be5773d;context=Zmxvdy1pZD00YWU2ZWZjNi01ZjgzLTUwYTQtOTI4OS0xZjliMGMwNWY3NjBfMTUwNzA0NDE0OTc3NV84MTI5XzU1NDcmcmFuaz0w?app_id=DemoAppId01082013GAL&app_code=AJKnXv84fjrb0KIHawS0Tg&show_refs=pvid

在这两个例子中,唯一的区别是placeId

文档中,没有一个参考资料说每个地方都需要或存在外部标识符。

由于它代表外部标识符,我认为我们可以假设它不是必需的。

这正是我们刚才看到的你的位置(8403fv6k-d1b2fde0616e0326e321a54b88cd9f53):这个位置没有任何外部标识符。


根据您的评论,您需要的是有关某个地方的信息。
因此,在运行第一个查询后,您应该会得到类似以下的内容:
{
    title: "Southwest Test & Balance",
    position: [],
    id: "8403fv6k-d1b2fde0616e0326e321a54b88cd9f53",
    href: "https://[...]"
}

有了这个ID,你就可以访问它:

places.cit.api.here.com/places/v1/places/8403fv6k-d1b2fde0616e0326e321a54b88cd9f53;context=Zmxvdy1pZD0zYTFlZjg5ZS02ZTY5LTUxYmEtYWFkYS1kY2UwZWMyNDdkMDBfMTUwNzEzNjUxNjI5N182NjExXzc2OTgmcmFuaz0w?app_id=DemoAppId01082013GAL&app_code=AJKnXv84fjrb0KIHawS0Tg

或者直接使用href信息。

这个响应已经给出了您访问单个地点的所有信息的ID和URL。
您不需要任何其他外部ID或参考。


有没有任何永远存在的 ID 可以用于查找端点? - demo
这个特定的端点使用外部ID,不能保证每个地方都存在。你真正的问题是什么?是通过特定的ID查找地点吗? - MiguelKVidal
我需要收到有关某个地方的详细信息。在这种情况下,查找端点对我来说看起来不错...但它只适用于外部ID... - demo
@demo 那么你如何定义“某个地方”呢?你的系统中有ID吗?是基于经纬度的参考吗?还是基于名称/地址的?首先,你需要清楚地定义如何识别两个不同的地方。在此之后,根据这些信息,你需要提出一个新问题:“如何根据X信息查找一个地方?” - MiguelKVidal
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接