• Stars
    star
    195
  • Rank 199,374 (Top 4 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created about 8 years ago
  • Updated almost 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

android marker聚合效果

本工程为基于高德地图Android SDK进行封装,实现了Marker聚合效果的例子

前述

功能描述

基于3D地图SDK进行封装,在大量点需要显示的场景下可以对点进行聚合显示,提高地图响应显示效率。在之前的开源工程版本基础上做了一些修改,提高了显示速度和内存优化使用,支持的聚合点更多,效果更好。主要修改包括:

  • 将marker处理线程和聚合算法线程进行分离,提高效率。
  • 聚合过程中减少不必要的运算,提高聚合显示速度。
  • 适配新版SDK应用场景,对用到的图标,统一管理,减少内存使用和提高效率,
  • 加入了动画效果,聚合切换过程更为平滑

效果图如下

Screenshot

扫一扫安装##

Screenshot

使用方法##

###1:配置搭建AndroidSDK工程###

###2:接口使用###

  • 初始化聚合和加入元素

1:批量初始化,适合一次大量加入

List<ClusterItem> items = new ArrayList<ClusterItem>();
 //随机10000个点
 for (int i = 0; i < 10000; i++) {
     double lat = Math.random() + 39.474923;
     double lon = Math.random() + 116.027116;
     LatLng latLng = new LatLng(lat, lon, false);
     RegionItem regionItem = new RegionItem(latLng,
             "test" + i);
     items.add(regionItem);

 }
mClusterOverlay = new ClusterOverlay(mAMap, items,
         dp2px(getApplicationContext(), clusterRadius),
               getApplicationContext());

2:初始化之后,有新的聚合点加入

double lat = Math.random() + 39.474923;
double lon = Math.random() + 116.027116;

LatLng latLng1 = new LatLng(lat, lon, false);
RegionItem regionItem = new RegionItem(latLng1,
        "test");
mClusterOverlay.addClusterItem(regionItem);
  • 设置渲染render和聚合点点击事件监听
mClusterOverlay.setClusterRenderer(MainActivity.this);
mClusterOverlay.setOnClusterClickListener(MainActivity.this);
  • 自定义渲染
public Drawable getDrawAble(int clusterNum) {
    int radius = dp2px(getApplicationContext(), 80);
    if (clusterNum == 1) {
        Drawable bitmapDrawable = mBackDrawAbles.get(1);
        if (bitmapDrawable == null) {
            bitmapDrawable =
                    getApplication().getResources().getDrawable(
                    R.drawable.icon_openmap_mark);
            mBackDrawAbles.put(1, bitmapDrawable);
        }

        return bitmapDrawable;
    } else if (clusterNum < 5) {

        Drawable bitmapDrawable = mBackDrawAbles.get(2);
        if (bitmapDrawable == null) {
            bitmapDrawable = new BitmapDrawable(null, drawCircle(radius,
                    Color.argb(159, 210, 154, 6)));
            mBackDrawAbles.put(2, bitmapDrawable);
        }

        return bitmapDrawable;
    } else if (clusterNum < 10) {
        Drawable bitmapDrawable = mBackDrawAbles.get(3);
        if (bitmapDrawable == null) {
            bitmapDrawable = new BitmapDrawable(null, drawCircle(radius,
                    Color.argb(199, 217, 114, 0)));
            mBackDrawAbles.put(3, bitmapDrawable);
        }

        return bitmapDrawable;
    } else {
        Drawable bitmapDrawable = mBackDrawAbles.get(4);
        if (bitmapDrawable == null) {
            bitmapDrawable = new BitmapDrawable(null, drawCircle(radius,
                    Color.argb(235, 215, 66, 2)));
            mBackDrawAbles.put(4, bitmapDrawable);
        }

        return bitmapDrawable;
     }
}
  • 聚合点击事件
public void onClick(Marker marker, List<ClusterItem> clusterItems) {
    mClusterItems = clusterItems;
    mCenterLat = marker.getPosition();
    LatLngBounds.Builder builder = new LatLngBounds.Builder();
    for (ClusterItem clusterItem : clusterItems) {
        builder.include(clusterItem.getPosition());


    }
    LatLngBounds latLngBounds = builder.build();
    mAMap.animateCamera(CameraUpdateFactory.newLatLngBounds(latLngBounds, 0)
    );
}

More Repositories

1

wx-regeo-poiaround-weather

基于微信小程序SDK实现的DEMO
JavaScript
190
star
2

android-trip

出行类应用乘客端解决方案
Java
122
star
3

amap-location-flutter

高德定位Flutter插件
Objective-C
110
star
4

android-path-record

轨迹回放和轨迹纠偏
Java
96
star
5

android-smooth-move

android marker点沿线平滑移动效果
Java
90
star
6

android-path-smooth

轨迹平滑处理示例
Java
80
star
7

android-service-location

Java
77
star
8

android-o-backgroundlocation

Android O后台保持定位示例
Java
60
star
9

iOS-cluster-marker

Objective-C
58
star
10

amap_maps_flutter

Flutter 使用高德地图SDK示例
Dart
45
star
11

web-route-base-on-geolocation-and-placesearch

一个实现了用户位置确定、目的地选择、驾车路线规划的移动端示例,模拟打车场景。基于高德地图JSAPI的Geolocation、PlaceSearch、Driving、Geocoder等组件开发。
JavaScript
43
star
12

android-place-choose

Java
42
star
13

android-switch-map

Amap和Google地图切换
Java
32
star
14

android-map-game

高德地图Android SDK 3D 关于地图游戏方面的应用
Java
31
star
15

iOS-path-smooth

iOS轨迹平滑处理示例
Objective-C
26
star
16

android-multiple-infowindows

用marker展示多infowindow的效果
Java
25
star
17

android-multiroute-display

多路径规划、导航示例
Java
24
star
18

iOS-path-record

iOS-path-record
Objective-C
22
star
19

iOS-HelloCarPlay

使用高德地图导航SDK实现支持CarPlay的导航App
Objective-C
22
star
20

android-place-search

Java
19
star
21

iOS-trip

演示类似滴滴叫车功能
Objective-C
19
star
22

android-once-continue-location

Java
17
star
23

iOS-map-game

Objective-C
16
star
24

android-drive-route

Java
15
star
25

android-location-circle

定位圈动画
Java
15
star
26

android-trip-search

出行类app结合了叫车主页和检索的demo
Java
15
star
27

android-location-rotation-effect

Java
14
star
28

iOS-smooth-move

Objective-C
14
star
29

android-map-fragment

Java
14
star
30

android-location-markermove

位置变化时,定位点平滑移动效果
Java
14
star
31

web-mobile-placesearch

基于高德jsapi实现的手机端地点搜索
HTML
13
star
32

iOS-location-checkin

实现了支持微调位置的定点签到功能
Objective-C
12
star
33

android-navi-quick-start

综合使用搜索和导航实现导航到周边餐馆功能示例
Java
12
star
34

android-map-permission

动态申请存储和定位运行时权限示例(Android6.0)
Java
12
star
35

iOS-place-choose

iOS-place-choose
Objective-C
11
star
36

iOS-switch-map

根据地图中心点是否在国内切换高德地图和苹果地图
Objective-C
11
star
37

android-walk-route-plan

步行路径规划、通过overlay及列表方式展现规划结果
Java
11
star
38

android-location-geofence

Java
10
star
39

android-nearbysearch

附近派单简单示例demo
Java
10
star
40

android-location-hight-accuracy

提升定位精度示例
Java
10
star
41

android-location-checkin

Java
9
star
42

android-navi-fragment

fragment方式导航示例
Java
8
star
43

iOS-drive-route

iOS驾车路线规划(带实时路况)demo
Objective-C
8
star
44

iOS-location-geofence

iOS地理围栏
Objective-C
8
star
45

android-track-demo

HT 轨迹跟踪的demo
Java
8
star
46

android-kotlin

kotlin amap示例
Kotlin
8
star
47

android-map-zoomtospan

地图全览
Java
7
star
48

android-screenshot-mapview-view

地图截图&View截图功能
Java
6
star
49

iOS-location-rotation-effect

定位图标旋转
Objective-C
6
star
50

android-traffic-transfer

Java
6
star
51

android_moving_point

移动点的轨迹动态展示
Java
6
star
52

iOS-location-circle

iOS-location-circle
Objective-C
6
star
53

iOS-multiroute-display

iOS-multiroute-display
Objective-C
6
star
54

iOS-traffic-transfer

公交换乘:在地图页面上,固定起点和终点,规划出公交路线,通过详情,进行列表的详情展示.
Objective-C
6
star
55

iOS-runAndDraw

显示若何使用高德地图sdk 移动annotation同时画出移动轨迹
Objective-C
5
star
56

iOS-service-location

iOS-service-location
Objective-C
5
star
57

android-map-initialcenter

改变初始地图显示位置
Java
5
star
58

Xamarin-Android

Xamarin 使用高德地图SDK示例
C#
5
star
59

weex-3d-map

Java
5
star
60

AMapGPSMocker

GPS的mock工具,提供单点、多点(路线)的模拟和回放、坐标系转换等功能
Objective-C
5
star
61

amap-location-react-native

高德定位SDK在React Native中的使用示例
Objective-C
4
star
62

iOS-watch-navi

iOS-watch-demo-navi
Objective-C
4
star
63

android-map-scrollview

ViewPager切换页面和滑动地图手势区分示例
Java
4
star
64

iOS-once-continue-location

iOS-once-continue-location
Objective-C
4
star
65

amap-location-weex

Weex上使用高德定位SDK的示例
JavaScript
4
star
66

android-poisearch-demo

出行类app的检索demo
Java
4
star
67

android-map-rotation-effect

地图绕中心点旋转效果 (支付宝AR红包地图手势效果)
Java
4
star
68

android-ride-route-plan

自行车路径规划、通过overlay及列表方式展现规划结果
Java
4
star
69

iOS-trip-search

iOS-trip-search
Objective-C
4
star
70

iOS-assist-h5-location

辅助H5定位:通过定位SDK提供的单次定位接口获取单次定位结果,将定位结果打点在H5地图上。 实现了Objective-C(Swift)和JavaScript的相互调用
Objective-C
4
star
71

iOS-ride-route-plan

iOS骑行出行路线规划demo
Objective-C
3
star
72

android-collision-marker

Marker描述文字碰撞,改变文字位置或者隐藏
Java
3
star
73

iOS-place-search

iOS-place-search
Objective-C
3
star
74

android-navi

Java
3
star
75

android-location-diagnose

高德地图定位检测组件
Java
3
star
76

android-assist-h5-location

Java
3
star
77

android-drive-route-plan

驾车路径规划计算、按照交通拥堵情况绘制路径规划结果
Java
3
star
78

android-gesture-zoom

利用自定义手势实现缩放
Java
3
star
79

iOS-map-rotation-effect

Objective-C
2
star
80

android-marker-grow

Java
2
star
81

iOS-map-scrollview

map view on scrollView
Objective-C
2
star
82

android-map3d

Java
2
star
83

iOS-annotation-click

演示annotation的点击事件处理
Objective-C
2
star
84

iOS-selectable-overlay

iOS-selectable-overlay
Objective-C
2
star
85

iOS-3d-touch

iOS-3DTouch
Objective-C
1
star
86

android-map-indoor

室内地图
Java
1
star
87

iOS-screenshot-mapview-view

iOS-screenshot-mapview-view
Objective-C
1
star
88

Auto_BL_SDK_Demo

Java
1
star
89

android-map-customzoom

自定义地图缩放按钮
Java
1
star
90

iOS_SDK_Dynamic

iOS_SDK_Dynamic
1
star
91

android-map-markerwebicon

Java
1
star
92

iOS-map-initialcenter

改变地图初始化中心点坐标
Objective-C
1
star
93

iOS-marker-grow

annotation起立效果
Objective-C
1
star
94

android-poisearch-demo-lite

针对出行类app使用检索进行了详细介绍
Java
1
star
95

android-commuting-card

通勤卡片
Java
1
star
96

android-map-poioverlay

PoiOverlay开源代码及调用
Java
1
star
97

iOS-map3d

map3d official demo
Objective-C
1
star
98

android-map-text

取消显示地图上的文字
Java
1
star
99

iOS-multiple-infowindows

iOS-multiple-infowindows
Objective-C
1
star