我正在尝试在下面创建以下算法,但不确定如何入门,因此这里没有任何代码:
目标是展示(例如,来自Google Maps的30家商店)。我目前在该应用中使用Google Maps API。
算法:
根据缩放级别检索30个不同的商店。
示例1:如果缩放比例为10 (City Zoom),则以该特定缩放比例显示30个不同的商店。这些商店将覆盖不同的经纬度,并且距离地图很长。 (最好是根据用户当前在地图上看到的内容来覆盖北,南,东和西)。
示例2:如果用户缩放到15级,(Street Zoom)还将以该特定缩放显示这30个商店。如果没有30家商店,它将显示(
任何帮助将不胜感激。如果需要更多说明,请发表评论,我将对该职位进行修改。
最佳答案
在显示商店之前,您需要隐藏“标准”标记,例如在this的Jozef答案中:
您只需修改地图样式即可完成此操作:Adding a Styled Map
创建JSON文件src \ main \ res \ raw \ map_style.json,如下所示:
[
{
featureType: "poi",
elementType: "labels",
stylers: [
{
visibility: "off"
}
]
}
]
将地图样式添加到您的
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显示的所有商店仍然应该可见。