根据当前位置获取当前所在的总“区域/区域”

在这里输入图像说明

假设我们有三家酒店: A酒店(1公里半径范围内), B酒店(半径2公里)和C酒店(4公里半径范围内)。 一辆汽车进入并处于某个位置。 这些酒店(或任何其他地方)是由我们添加,是自定义的。

问题是我想find在当前位置有受欢迎度/影响力酒店。

而且我希望完全借助Google地图 。 这可行吗? 在Android(可选) ELI5

Related of "根据当前位置获取当前所在的总“区域/区域”"

Google Maps API有一个名为computeDistanceBetween的函数。 它“返回两个纬度/经度坐标之间的距离,以米为单位”。 圆有中心和半径属性。 所以你需要计算一个圆圈的中心和你当前的位置之间的距离。 如果它小于圆的半径,则表示您的当前位置在圆内。

简化是关键

虽然我理解你的目标(得到你附近的所有酒店的名单),但我相信你的解释让很多人不屑一顾。 您不需要对位置进行三angular测量并计算圆的半径,而不需要Google Maps API和服务。

所有你需要知道的是,如果你想要一个前端,后端或移动解决scheme

Google Maps Places API Web服务(后端)

Places API有一个非常有用的function,称为“附近的地方”。 引用这个特性的文档:

附近search可让您search指定区域内的地点。 您可以通过提供关键字或指定您正在search的地点的types来优化您的search请求。

这看起来完全像你所需要的,对吗?

要从服务器向Places API Web服务请求查找附近的位置,可以执行以下操作:

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=500&type=restaurant&name=cruise&key=YOUR_API_KEY 

请记得将key=YOUR_API_KEY更改为有效的密钥字段。 示例显示将在-33.8670522,151.1957362的位置周围的半径500米内寻找餐馆。

这里有很多参数,你可以在下面的文档中阅读更多关于这个的信息

https://developers.google.com/places/web-service/search

Google Maps JavaScript API与Places库(前端)

如果您没有中央服务器或服务来为您提出请求,则使客户端直接发送请求也是一种select。

在这种情况下,有JavaScript API。 JavaScript API是客户端友好的API,可以重用某些Web服务的function。

在这种情况下,您可以将JavaScript API与Places库结合使用。 根据文档,这个API允许你做“附近的search请求”:

附近search可让您按关键字或typessearch指定区域内的地点

下面的链接https://developers.google.com/maps/documentation/javascript/examples/place-search中的实例可以看到这样一个请求的示例

您可以在以下文档中详细了解此API和此库的参数和用法: https://developers.google.com/maps/documentation/javascript/places#place_search_requests

Google Maps Android API(手机)

从您添加的图片中,我假设您的应用程序将“ 随时随地使用 ”(也许是移动应用程序)或类似的东西。

在这种情况下,使用networking服务器或网站可能会很麻烦,因为当你有回应的时候,汽车已经处于另一个位置了!

为了帮助你,还有Android API。 要使用它,你需要:

  1. 下载并安装Android Studio
  2. 添加Google Play服务包(包含您将使用的API)

你可以在这里阅读更多关于这个过程https://developers.google.com/maps/documentation/android-api/start

至于代码和示例,我强烈build议您查看此示例的GitHub存储库https://github.com/googlemaps/android-samples


我们的酒店可能不会显示在Google地图上

除非你的DeLorean把你带回到19世纪后半叶,否则你被困在一个有数百个mongoose,毒池和老虎的小岛上,想知道他是否应该吃你的东西,谷歌地图几乎总是会告诉你一些酒店,你可以过夜。

PS:荣誉++如果有人得到我的参考:P

将酒店和地点添加到Google Maps API和服务

如果这还不够的话,还是有办法解决的。 您可以使用以下两种方法将酒店地址和地点添加到Google地图:

  • 发送反馈
  • 使用地图制作工具

发送反馈

“发送反馈”function可让您将反馈发送给Google数据小组进行审核。 一旦获得批准,数据就会添加到Google的数据库中,并将提供给所有Google的客户。 您可以按照https://support.google.com/maps/answer/3094045?co=GENIE.Platform%3DDesktop&hl=zh_CN中所述的步骤执行此操作

但请注意,您的反馈审查过程需要一些时间,所以不要指望什么瞬间!

使用地图制作工具

或者,您可以使用Google地图制作工具 。 此工具可让您以更简化的方式进行编辑并将信息添加到我们的服务中。

起初,您的编辑和build议仍将被审核,通常需要不到两周才能获得批准。

然而,随着时间的推移,越来越多的人被批准,你获得了声望,当你有很多的声望,你的build议将被自动添加。

但是,在使用之前,请确保您查看受支持国家/地区的列表。

另外,如果语言很重要,您也可以考虑支持的语言列表。

我真的不想向Google地图添加任何内容

有时整个业务都是数据本身,所以自由发布是不行的。

在这些情况下,您将拥有自己的数据库,您的服务将需要检查。

在这种情况下,需要为您的系统定制解决scheme,但为了提出更多的build议,需要更多的信息。


希望能帮助到你 !

您的方法应该使用快速近似计算而不依赖apis,然后使用api来提高用户体验。

  • 你知道汽车的坐标。
  • 你知道每个酒店的坐标。
  • 根据您的标准或数据为每家酒店分配受欢迎程度权重。 例如,拥有更多用户评论或交易或预订的酒店将具有更高的影响力,或者如果您想个性化,适合login用户的预算偏好(基于过去的数据或设置)的酒店将具有较高的影响力。 让我们把这个stream行值叫做p1,p2 .. p3等

  • 查找位于阈值范围内的所有酒店,例如在汽车的当前位置中说5公里。 这可以在任何主要的存储数据库中使用地理空间查询来完成(例如,如果您的酒店点存储在MySQL或mongodb中),或者如果您正在使用酒店数据api,则获取附近的酒店或该城市的所有酒店,并根据车辆当前位置的距离修剪它们。

  • 对于轿车C和旅馆H1,H2之间的直线距离 。 使用Haversine公式 ,这将使您的汽车和沿着地球曲率的任何酒店之间的距离。 (实际的道路距离可能会有所不同,因为道路方向不直,涉及转弯等)。 但是这会给你一个快速的C和H1,D2之间的距离D1近似C和H2等…

  • 现在根据车C与酒店H之间的距离来衰减每个酒店的人气分数P1 … PN 。 例如,如果酒店H1的人气分数为P1 = 90,而酒店H2的人气分数为P2 = 90,但是C H1距离为10kms,并且C H2距离为2kms,则H2将具有与H1相比,对当前位置的影响更大。 一个简单的公式可以是LocationInfluence = PopularityScore/ log(Distance) ,你可以根据你的用例来优化它。

  • 现在对于最有影响力的酒店H1,H2,H3 …使用DistanceMatrix api来find实际的驾驶距离,您还可以使用谷歌地图方向API为Android或JavaScript显示驾驶方向的用户,从位置到酒店。