获得总数"区域/区域"我目前所处的位置,基于当前位置

时间:2016-09-08 13:34:39

标签: android google-maps google-maps-api-3 geolocation location

enter image description here

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

问题是我想在我当前的位置找到受欢迎/影响的酒店。

我希望它完全可以在 Google地图的帮助下完成。在Android上是否可行(可选) ELI5

3 个答案:

答案 0 :(得分:2)

Google Maps API有一个名为computeDistanceBetween的功能。它返回两个纬度/经度坐标之间的距离(以米为单位)"。 Circle具有Center和Radius属性。因此,您需要计算圆心与当前位置之间的距离。如果它小于圆的半径,则意味着您当前的位置在圆圈内。

答案 1 :(得分:1)

简化是关键

虽然我理解你的目标(得到你附近所有酒店的清单),但我相信你的解释会让很多人措手不及。您不需要对位置进行三角测量并计算圆的半径 - 而不是使用Google Maps API和服务。

您需要知道的是,您是否需要针对前端,后端或移动设备的解决方案

Google Maps Places API网络服务(后端)

Places API有一个非常实用的功能,名为" Places Nearby"。引用此功能的文档:

  

通过“附近搜索”,您可以搜索指定区域内的位置。   您可以通过提供关键字或指定来优化搜索请求   您要搜索的地点类型。

这看起来与你需要的完全一样,对吧?

要从服务器向Places API网络服务发出请求以查找附近地点的请求,您可以执行以下操作:

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 with Places Library(前端)

如果您没有中央服务器或服务来为您发出请求,那么让客户端直接发送请求也是一种选择。

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

在这种情况下,您可以将JavaScript API与Places库结合使用。根据文档,此API允许您执行"附近搜索请求":

  

“附近搜索”可让您搜索指定区域内的位置   关键字或类型

此类请求的示例可以在以下链接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(移动版)

根据您添加的图片,我认为您的应用将会在" 随时随地使用" (可能是移动应用程序),或类似的东西。

在这种情况下,使用网络服务器或网站可能很麻烦,因为当您收到回复时,汽车已经处于另一个位置!

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

  1. 下载并安装Android Studio
  2. 添加Google Play服务包(包含您将使用的API)
  3. 您可以在此处了解有关此流程的更多信息https://developers.google.com/maps/documentation/android-api/start

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

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

    除非你的DeLorean带你回到19世纪下半叶,否则你被困在一个拥有数百只猫鼬的岛屿,有毒的水池和一只老虎想知道他是否应该吃你,谷歌地图几乎总会给你看一些你可以过夜的酒店。

    PS:kudos ++如果有人得到我的参考资料:P

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

    如果仍然不够,还有一种方法可以修复它。您可以使用以下两种方法之一将酒店地址和地点添加到Google地图:

    • 发送反馈
    • 使用Maps Maker

    发送反馈

    "发送反馈"功能允许您将反馈发送给Google的数据团队进行审核。一旦获得批准,数据就会添加到Google的数据库中,并且可供所有Google客户使用。您可以按照此处https://support.google.com/maps/answer/3094045?co=GENIE.Platform%3DDesktop&hl=en

    中描述的步骤执行此操作

    请注意,您的反馈审核流程需要一些时间,所以不要期待任何事情!

    使用Maps Maker

    或者,您可以使用Maps Maker。此工具允许您以更简化的方式对我们的服务进行编辑和添加信息。

    首先,您的修改和建议仍会受到审核,通常需要不到两周的时间才能获得批准。

    然而,随着时间的推移,随着越来越多的建议被批准,您获得了声誉,当您拥有很多声誉时,您的建议将会自动添加。

    在使用之前,请务必查看supported countries

    列表

    此外,如果语言很重要,您也可以通过查看supported languages列表来考虑它。

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

    有时整个业务本身就是数据,因此不能自由地提供数据。

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

    在这种情况下,需要为您的系统提供自定义解决方案,但为了提出更多想法,需要更多信息。

    希望它有所帮助!

答案 2 :(得分:1)

您的方法应使用快速近似计算而不依赖api,然后api用法可用于增强用户体验。

  • 你知道汽车的坐标。
  • 您知道每家酒店的坐标。
  • 根据您的标准或数据为每家酒店分配人气权重。例如,具有更多用户评论或交易或预订的酒店将具有更高的影响力,或者如果您想要个性化,则适合登录用户的预算偏好的酒店(基于过去的数据或设置)将具有更高的影响力。让我们称之为人气价值p1,p2..p3等。

  • 查找所有位于阈值范围内的酒店,比如汽车当前位置的5公里。这可以使用任何主要存储数据库中的地理空间查询来完成(例如,如果您的酒店积分存储在MySQL或mongodb中),或者如果您使用的是酒店数据api,请到附近的酒店,或该城市的所有酒店,并根据与汽车当前位置的距离进行修剪。

  • 对于汽车C与酒店H1,H2之间的线性距离。使用Haversine formula,这将为您提供汽车与地球曲率上的任何酒店之间的距离。 (实际道路距离可能会有所不同,因为道路方向不直,涉及转弯等)。但这将使您快速近似C和C之间的距离D1。 C,C之间的H1,D2 H2等......

  • 现在根据Car C和酒店之间的距离H 衰减每家酒店的受欢迎度得分P1 ... PN。例如,如果酒店H1具有流行度得分P1 = 90,并且酒店H2具有流行度得分P2 = 90,但是C< ---> H1距离为10kms,C< - > H2距离为2kms, 那么与H1相比,H2对当前位置的影响更大。 一个简单的公式可以是LocationInfluence = PopularityScore/ log(Distance),您可以根据您的使用情况对其进行优化。

  • 现在对于最有影响力的酒店H1,H2,H3 ...使用DistanceMatrix api查找实际行驶距离,您还可以使用google maps directions api Android或Javascript来显示行车路线对于用户,从位置到酒店。