根据谷歌地图 API 的缩放级别显示商店



我正在尝试在下面创建以下算法,但我不确定如何开始,因此这里没有任何代码:

目标是展示(例如 Google 地图中的 30 家商店(。我目前正在应用程序中使用谷歌地图API。

算法:
根据缩放级别检索30个不同的商店。

示例 1:如果缩放为 10(城市缩放(,则以该特定缩放显示 30 个不同的商店。这些商店将覆盖地图的不同纬度和长度。(理想情况下,根据用户当前在地图中看到的内容覆盖北部、南部、东部和西部(。

示例 2:如果用户缩放到级别 15,(街道缩放(它还将以该特定缩放显示这 30 家商店。如果不是 30 个商店,它将显示 (<30(。

任何帮助将不胜感激。如果需要进一步澄清,请发表评论,我将对帖子进行修改。

  1. 在显示商店之前,您需要隐藏"标准"标记,就像 Jozef 的这个答案一样:

您只需修改地图样式即可完成此操作:添加 风格 地图

  1. 像这样创建 JSON 文件src\main\res\raw\map_style.json

[
{
featureType: "poi",
elementType: "labels",
stylers: [
{
visibility: "off"
}
]
}
]
  1. 将地图样式添加到GoogleMap

googleMap.setMapStyle(MapStyleOptions.loadRawResourceStyle(getContext(), R.raw.map_style));
  1. 您可以使用 Google 地点 API 中的地点搜索,并通过附近的网址请求获取兴趣点列表:

    https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=<LAT_LNG>&types=point_of_interest&radius=<RADIUS_IN_METERS>&sensor=false&key=<YOUR_APP_KEY>

解析它。

铌!附近的 URL 请求仅返回 20 个位置,为了加载更多数据,您应该使用响应next_page_token标签中的字符串值,并通过pagetoken参数将其传递给下一个请求:

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=<LAT_LNG>&types=point_of_interest&radius=<RADIUS_IN_METERS>&sensor=false&key=<YOUR_APP_KEY>&pagetoken=<TOKEN_FOR_NEXT_PAGE_FROM_next_page_token_TAG_OF_RESPONSE>
  1. 您可以按rating或其他字段或其他自定义条件从列表中选择 30 家商店。似乎,如果用户将缩放从 10 更改为 15,则在缩放 10 上显示的所有商店应该仍然可见。

相关内容

  • 没有找到相关文章

最新更新