2017-09-22 98 views
8

我正在使用HERE Places API。此处Places API:并非所有项目都有PVID

首先我正在做一个搜索。

例如,这查询:

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 

根据这个文件(Link)如果我添加show_refs=pvid查询字符串,结果我会得到外部id,我可以用它来查询lookup端点。

但结果我得到一个响应:

{ 
    "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" 
     } 
    } 
} 

对此没有对象references

它是一个错误或不是每个地方都有这个外部ID?

回答

1

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

是的,并不是每个地方都有一个pvid。这就是为什么我会建议使用共享ID代替。我意识到应该改进文档以澄清这一点。

通过将show_refs=sharing添加到您的search queryplace details request可以获得共享ID。它可以在references的字段中找到。一旦你有了共享ID,你就可以像查询端点intended一样。

+0

感谢您的回复。那么,我已经尝试了这个请求,并且搜索很好,但是我无法得到详细信息请求如何与共享ID一起工作......在我已经完成了对'lookup'端点的请求之前,但现在您正在显示像'/ places/V1 /地/ {sharingId}'。如果我没有上下文,它不工作。你能给我一个链接如何正确构建详细信息请求。谢谢 – demo

+1

也许由大多数浏览器自动遵循的查找端点返回的302重定向引起的混淆。这就是为什么你在URL栏中看到/ places/v1/places的原因,即使你按照我的链接发起了查找请求。因此,您可以在应用程序中执行此操作:places.cit.api.here.com/places/v1/places/lookup?source=sharing&id=omitted,您将被重定向(HTTP 302)以解析地点详细信息。 – cio

+0

是的,谢谢,现在它更好:)顺便说一句,我可以得到有关使用placeId(不共享id)的地方的详细信息,只需要包括'&source = sharing'来查询字符串。这是否正确? – demo

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

docs中,没有一个引用表示外部标识符对每个地方都是必需的或存在的。

由于它代表一个外部标识符,我相信我们可以假设它不是必需的。

这就是我们刚刚在您的地方看到的(8403fv6k-d1b2fde0616e0326e321a54b88cd9f53):这个没有任何外部标识符。


根据你的意见,你需要的是一个地方的信息。

所以,你运行你的第一次查询后,你应该得到的东西,如:

{ 
    title: "Southwest Test & Balance", 
    position: [], 
    id: "8403fv6k-d1b2fde0616e0326e321a54b88cd9f53", 
    href: "https://[...]" 
} 

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

places.cit.api.here.com/places/V1 /地点/ 8403fv6k-d1b2fde0616e0326e321a54b88cd9f53;上下文= Zmxvdy1pZD0zYTFlZjg5ZS02ZTY5LTUxYmEtYWFkYS1kY2UwZWMyNDdkMDBfMTUwNzEzNjUxNjI5N182NjExXzc2OTgmcmFuaz0w APP_ID = DemoAppId01082013GAL &的app_code = AJKnXv84fjrb0KIHawS0Tg

或直接使用href信息。

这个回应已经给你ID和URL来访问一个地方的所有信息。
您不需要任何其他外部ID或引用。

+0

这是否意味着端点'/ places/lookup'也被标记为“Additional”不能被“执行”到每个地方? – demo

+0

正如文档(https://developer.here.com/documentation/places/topics_api/resource-lookup.html)中所述,查找通过其外部ID找到一个位置。所以,我相信你的问题的最佳答案是:不,你不能查找每个地方。您可以尝试在这里查找:https://places.cit.api.here.com/places/v1/places/lookup?app_id=DemoAppId01082013GAL&app_code=AJKnXv84fjrb0KIHawS0Tg – MiguelKVidal

+0

是否有任何id始终存在,可用于查找端点? – demo

相关问题