在我的Android应用程序中,我想动态地在谷歌地图上显示标记。我通过我的网络API提供了大量的标记位置数据,需要根据用户需要查看来加载它们(例如,只需获取属于地图部分的标记,然后在摄像机移动时加载其他标记异步模式)。
我经常搜索但找不到任何直接的解决方案,我的问题是做这种功能的最佳做法和解决方案是什么?是否有任何提供的指导?
P.S:使用集群管理器在Android谷歌地图中加载所有标记时没有任何问题,但是当标记数量变大时,需要花费太多时间来获取所有标记。
答案 0 :(得分:1)
您可以使用 Google地图群集获取更多标记数据。它将为您提供有效的 Google地图体验。通过聚类标记,您可以在地图上放置大量标记,而不会使地图难以阅读。
以下是您可以关注的官方文档here
示例代码。
// Declare a variable for the cluster manager.
private ClusterManager<MyItem> mClusterManager;
private void setUpClusterer() {
// Position the map.
getMap().moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(51.503186, -0.126446), 10));
// Initialize the manager with the context and the map.
// (Activity extends context, so we can pass 'this' in the constructor.)
mClusterManager = new ClusterManager<MyItem>(this, getMap());
// Point the map's listeners at the listeners implemented by the cluster
// manager.
getMap().setOnCameraIdleListener(mClusterManager);
getMap().setOnMarkerClickListener(mClusterManager);
// Add cluster items (markers) to the cluster manager.
addItems();
}
private void addItems() {
// Set some lat/lng coordinates to start with.
double lat = 51.5145160;
double lng = -0.1270060;
// Add ten cluster items in close proximity, for purposes of this example.
for (int i = 0; i < 10; i++) {
double offset = i / 60d;
lat = lat + offset;
lng = lng + offset;
MyItem offsetItem = new MyItem(lat, lng);
mClusterManager.addItem(offsetItem);
}
}
通过使用此示例代码,您需要根据需要将api数据配置为群集,并在地图上显示标记。
由于标记数据量很大,显然需要时间加载到集群管理器中,并且还取决于您连接的网络。