开发者社区 问答 正文

JS如何获得带有相应代码的城市和机场的完整列表?

我正在使用Amadeus自助服务网络服务构建旅行预订网站。从现在开始,我希望用户能够使用实际名称而不是IATA代码进行城市或机场的相对搜索。问题在于Amadeus API并不能真正为我解决这个问题。之所以这样,是因为请求过程要求我将国家代码作为请求参数的一部分。无论如何,没有countryCode字段,我可以实现这一目标吗?

console.log("Searching "+keyword); var form = new FormData(); var settings = { "url": "https://test.api.amadeus.com/v1/reference-data/locations?subType=CITY,AIRPORT&keyword="+keyword+"&countryCode=DE", "method": "GET", "timeout": 0, "processData": false, "mimeType": "multipart/form-data", "contentType": false, "data": form };```

展开
收起
被纵养的懒猫 2019-09-23 17:22:38 458 分享 版权
阿里云 AI 助理回答

理解您的需求,您希望用户能够通过城市或机场的名称(而不是IATA代码)进行搜索,并且在没有直接提供countryCode的情况下实现这一功能。虽然Amadeus API通常需要countryCode来精确搜索,但您可以采取一些策略来尽量减少用户输入负担并提高搜索灵活性:

  1. 自动补全和建议服务:在用户开始输入城市或机场名称时,可以利用前端技术(如JavaScript和AJAX)调用Amadeus的/reference-data/locations API,根据用户输入的部分文本获取可能的匹配项列表。这样,即使最终请求仍需countryCode,用户也能从下拉建议中选择,而无需手动输入国家代码。

  2. 地理编码服务:使用第三方地理编码服务(如Google Maps Geocoding API、高德地图API等),将用户输入的城市名转换为经纬度坐标或者尝试解析出国家信息。然后,您可以基于这些信息构造Amadeus API请求中的countryCode字段。

  3. 智能推测:如果您的应用有用户地理位置信息或者可以根据IP地址推断用户的大概位置,可以默认使用该位置的国家代码作为搜索参数。当然,这可能不总是准确,尤其是对于跨国旅行查询,但可以作为一个基础方案。

  4. 多步骤搜索:首先让用户选择国家,然后再搜索城市或机场。这样虽然增加了用户操作步骤,但确保了搜索结果的准确性,同时也间接收集了countryCode。

  5. 后端处理逻辑:在后端,您可以维护一个城市与国家的映射数据库,当用户输入城市名时,尝试在数据库中查找对应的国家代码,然后构造Amadeus API请求。如果数据库中没有匹配项,再考虑使用上述的地理编码服务。

请注意,实施上述任何解决方案前,请确保遵守Amadeus API的使用条款和条件,以及任何第三方服务的使用政策。同时,考虑到性能和成本,合理设计您的系统架构。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答