我可以合并谷歌地理编码和谷歌位置API吗


Can I combine the Google Geocoding and Google Places APIs?

我正在尝试进行基于PHP的位置搜索。我希望它尽可能"智能",能够找到地址和酒店、博物馆等

现在我正在使用谷歌地理编码API,但问题是它似乎只能找到地址(当我输入酒店名称时,它要么什么也找不到,要么在地球的另一端找到某个位置)。

我看得更远,发现了地方API,它可以找到各种企业和其他地方。问题是,我不认为(如果我错了,请纠正我)它能找到正常的地址。

所以我的理想情况是能够同时寻找地址和其他地方。我希望收到按相关性(由谷歌确定)排序的结果列表,或者只收到最相关的结果。

提前感谢!

Wouter Florign,

您当前的问题有几个组成部分:

  (1) the request/response from the Google Geocoding API
  (2) the request/response from the Google Places API
  (3) your workflow to process the responses/data from the above to API calls.

代码的主要目标是在不牺牲代码可重用性的情况下保持相关对象和依赖对象之间的一致性(工作流的延续取决于API响应)。为了确保这一点,您应该使用Observer模式来等待您的请求完成,以便继续您的工作流。使用observer模式而不使用promise的原因是PHP几乎完全是单线程的。因此,一个带有promise的实现将阻塞您的脚本,直到它完成。

如果你觉得使用promise更舒服,你可以从主脚本中获得promise分叉(使用PCNTL函数家族)。这将允许您的promise代码在后台运行,同时主脚本继续运行。它积极使用pcntl_fork,它允许您派生一个新线程。当承诺完成时,它又回来了。它有缺点,其中最大的缺点是不能通过信号以外的任何东西来传达主要过程。

另一个警告:

几年前,我实现了类似的功能。我相信我遇到了同样的问题;

就我而言,我能够利用Yelp API。这个API真是太棒了]。您所要做的就是使用可选的经度、纬度参数(它还有一个半径参数来限制您的搜索)在搜索API上执行GET请求。有了这一点,我能够获得关于给定地点的企业的各种信息:酒店、餐厅、专业服务(医生、牙医、理疗师),并能够根据各种指标(满意度、相关性等)对其进行排序。

如果你有任何问题,请告诉我!