我正在尝试创建以下算法,但我不确定如何开始,因此这里没有任何代码:
目标是展示(例如 Google map 上的 30 家商店)。我目前正在应用程序中使用 Google Maps API。
算法:
根据缩放级别检索 30 个不同的商店。
示例 1:如果缩放为 10 (City Zoom)以该特定缩放比例显示 30 家不同的商店。这些商店将覆盖 map 上不同的纬度和经度。 (理想情况下,根据用户当前在 map 中看到的内容覆盖北、南、东和西)。
示例 2:如果用户缩放到 15 级,(Street Zoom)它还会以该特定缩放比例显示这 30 家商店。如果不是 30 家商店,则会显示(< 30)。
任何帮助将不胜感激。如果需要更多说明,请发表评论,我将对帖子进行修改。
最佳答案
You can do it simply by modification of the map style: Adding a Styled Map
- Create JSON file src\main\res\raw\map_style.json like this:
[ { featureType: "poi", elementType: "labels", stylers: [ { visibility: "off" } ] } ]
- Add map style to your
GoogleMap
googleMap.setMapStyle(MapStyleOptions.loadRawResourceStyle(getContext(), R.raw.map_style));
您可以使用Place Search来自Google Places API并通过附近的 URL 请求获取兴趣点列表:
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>
- 您可以通过
rating
从列表中选择 30 家商店或其他字段或按其他自定义标准。看来,如果用户将缩放从 10 更改为 15,则缩放 10 处显示的所有商店仍应可见。
关于java - 根据 Google Maps API 的缩放级别显示商店,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52240088/