百度地图聚合点的展示

原创 2016年09月25日 23:19:04

转载请声明原文地址:http://blog.csdn.net/sagittarius1988/article/details/52665300

前言

好久没有更新博客了,一直在忙着项目地图实景图聚合的功能。来简单介绍下聚合的效果和实现的方法吧。

效果

先上图看效果
效果1
效果2
效果3

3张效果图,展示了3个地图层级的聚合效果。这里实现的效果,类似高德地图的实景图,有兴趣的小伙伴可以下个高德地图看看实景图的功能,不过高德的实景图效果,看着像是服务器已经将实景图进行按地点归类好的,所以估计也不需要使用聚合算法,实现起来会简单很多。

代码实现

在本项目的功能情景下,我们需要将服务器传回的点,按相互之间的距离进行归类聚合,现在最常见的聚合算法,大概就是K均值算法了。研究了K均值算法后,发现这里有个假定,就是K值是已知的,这显然对地图来说是不适用的,需要修改,使K值随地图的缩放层级和各个点的位置而变化。
这里使用的是百度地图,所以先查看百度地图的sdk,百度其实是有提供点聚合的功能,并且还提供了简单的聚合demo
百度地图聚合sdk
上图中红框内的就是百度聚合功能的核心api,api里各个类的代码功能,下次再讲解。

有了百度地图的这个api后,对地图点稍做适配,便可实现点的聚合效果了,但是实景图的效果,还是得自己去实现的。

我们知道,百度地图中,要显示效果图中的多个实景图,需使用百度地图中的Marker进行显示。简单的Marker显示,当然难不倒我们,但是当我们自定义好Marker的View后,实景图里的网络图片要怎么显示呢?最开始,我直接使用了ImageLoader(我这里使用的这个库进行图片加载)的
displayImage(String uri, ImageView imageView, ImageLoadingListener listener);
发现虽然logcat中显示已经下载好图片了,但压根就不会对Marker上的图片进行更新。
到百度地图的社区上查找问题,发现百度地图的Marker在你设置了view后,就跟你设置的view没关系了,就是说你无法控制view里的控件来更新Marker。所以说,只能在图片加载完后,再通过重新设置Marker的view,也就是BitmapDescriptor来更新Marker上的图片了。所以这里,我们需要使用图片的url做为key来记录显示的Marker,以便在图片加载完后去更新Marker。
但是测试的效果是,会经常出现部分Marker上图片不更新,看logcat,显示图片加载的task任务经常被cancel。
(晚了,待更新)

转载请声明原文地址:http://blog.csdn.net/sagittarius1988/article/details/52665300

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

简析百度地图点聚合功能----ClusterManager类

在百度地图提供的Demo中,已经提供了一个很简单的点聚合的demo程序,主要用到的类就是ClusterManager用来管理各个Marker的聚合, 另外就添加了一个实现了ClusterItem接口...
  • javine
  • javine
  • 2015-12-05 14:52
  • 5718

百度地图点聚合提高效率

优化百度地图点聚合 参考文献:http://www.cnblogs.com/lightnull/p/6184867.html 百度的点聚合算法 是基于方格和距离的聚合算法,即开始的时候地图上没...
  • ztop_f
  • ztop_f
  • 2017-02-16 14:02
  • 3221

细读百度地图点聚合源码(上)

之前在项目中需要用到百度地图的点聚合,看了百度提供的demo之后,稍微读了一些源码就能达到需求了,所以并未深入解读源码。 最近有空就把百度实现点聚合的源码从里到外仔细研究了一遍受益良多,在此分享一下。...
  • javine
  • javine
  • 2016-04-20 23:27
  • 10496

百度地图API 重新生成点聚合的功能

百度点聚合用来解决加载大量点要素到地图上产生覆盖现象的问题,并提高性能。 http://api.map.baidu.com/library/MarkerClusterer/1.2/docs/symb...

AppManager类,管理Activity和App

直接两段代码: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedIn...

Android 水平加载图片 自定义 HorizontalScrollView,防止一次性加载出现性能问题,防止OOM

本文是在 http://blog.csdn.net/lmj623565791/article/details/38140505 的基础上加工的,鸿洋_写的思路非常完美,夸张点就是无人出其右。 当然也...

Android AutoLayout全新的适配方式 堪称适配终结者

转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/49990941; 本文出自:【张鸿洋的博客】 一、概述相信Andro...

android 人脸检测

人脸检测是指从一副图片或者一帧视频中检测是否存在人脸。通过该技术手段可以判定有没有人脸出现在给定的图片中。注意它和人脸识别是有差异的,人脸检测解决的是照片中有没有人脸的问题,而人脸识别解决的是照片中的...

Android RxJava+Retrofit 一次(合并)请求多个接口

在实际开发中,我们需要同时请求2个或者2个以上的接口,同时又有更新UI,怎么办呢?最直接的最暴力的方法就是直接在一个方法里同步调用两个接口,那使用RxJava怎么实现呢?这个问题可以使用RxJava的...

百度地图 聚合功能的实现

百度地图的应用也是极为广泛,从基本的定位,大头针的展现到线路的规划等等,但如果地图页面上在某一个区域内展示的大头针过多的话会在地图上面一团一团的都是满满的大头针,或许我们将地图缩小到某个区域之后用户并...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)