加载地图 我们一般根据业务需求会添加一些 兴趣点,有时我们需要加载很多,如果按照普通的加载的话,会显得界面很卡顿,所以从网上参考一下资料,这里是聚合形式的方式来实现
代码:如下
/**
* 获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker
*/
private void resetMarks() {
System.out.println("markerOptionsList.size():"
+ markerOptionsList.size());
Projection projection = aMap.getProjection();
Point p = null;
markerOptionsListInView.clear();
// 获取在当前视野内的marker;提高效率
for (MarkerOptions mp : markerOptionsList) {
p = projection.toScreenLocation(mp.getPosition());
if (p.x < 0 || p.y < 0 || p.x > width || p.y > height) {
// 不添加到计算的列表中
} else {
markerOptionsListInView.add(mp);
}
}
// 自定义的聚合类MyMarkerCluster
ArrayList<MyMarkerCluster> clustersMarker = new ArrayList<MyMarkerCluster>();
for (MarkerOptions mp : markerOptionsListInView) {
if (clustersMarker.size() == 0) {
clustersMarker.add(new MyMarkerCluster(MainActivity.this,
mp, projection, 60));// 100根据自己需求调整
} else {
boolean isIn = false;
for (MyMarkerCluster cluster : clustersMarker) {
if (cluster.getBounds().contains(mp.getPosition())) {
cluster.addMarker(mp);
isIn = true;
break;
}
}