【Android】3.10 热力图功能
分类:C#、Android、VS2015、百度地图应用; 创建日期:2016-02-04
一、简介
热力图是用不同颜色的区块叠加在地图上描述人群分布、密度和变化趋势的一个产品,可利用自有数据,构建属于自己的热力图,为用户提供丰富的展示效果。
二、运行截图
简介:绘制自有数据热力图
详述:
(1)设置热力图颜色;
(2)准备数据、生成热力图;
(3)删除热力图;
本示例运行截图如下:
注意:由于.json文件包含的是全国范围的数据,单线程的加载过程非常慢(约10分钟左右),需要耐心等待。一旦数据加载完毕,再进行添加、删除操作就很快了。
当【添加】按钮变为可用时,单击它即可看到截图的效果。

三、设计步骤
1、添加demo10_heatmap.xml文件
在layout文件夹下添加该文件,然后将代码改为下面的内容:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" > <Button
android:id="@+id/add"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginBottom="2dip"
android:layout_marginLeft="2dip"
android:layout_marginRight="2dip"
android:layout_marginTop="2dip"
android:layout_weight="1"
android:padding="10dip"
android:text="添加" /> <Button
android:id="@+id/remove"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginBottom="2dip"
android:layout_marginLeft="2dip"
android:layout_marginRight="2dip"
android:layout_marginTop="2dip"
android:layout_weight="1"
android:text="删除" />
</LinearLayout> <com.baidu.mapapi.map.TextureMapView
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" /> </LinearLayout>
2、添加Demo10HeatMap.cs文件
在SrcSdkDemos文件夹下添加该文件,然后将代码改为下面的内容:
using Android.App;
using Android.Content.PM;
using Android.OS;
using Android.Widget;
using Com.Baidu.Mapapi.Map;
using Com.Baidu.Mapapi.Model;
using System.Collections.Generic;
using System.Threading.Tasks; namespace BdMapV371Demos.SrcSdkDemos
{
/// <summary>
/// 热力图功能demo
/// </summary>
[Activity(Label = "@string/demo_name_heatmap",
ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.KeyboardHidden,
ScreenOrientation = ScreenOrientation.Sensor)]
public class Demo10HeatMap : Activity
{
private TextureMapView mMapView;
private BaiduMap mBaiduMap;
private HeatMap heatmap;
private Button mAdd;
private Button mRemove;
private bool isDestroy; private List<LatLng> data; protected async override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.demo10_heatmap); mMapView = FindViewById<TextureMapView>(Resource.Id.mapview);
mBaiduMap = mMapView.Map;
mBaiduMap.SetMapStatus(MapStatusUpdateFactory.ZoomTo()); mAdd = FindViewById<Button>(Resource.Id.add);
mRemove = FindViewById<Button>(Resource.Id.remove);
mAdd.Enabled = false;
mRemove.Enabled = false;
mAdd.Click += delegate
{
AddHeatMap();
};
mRemove.Click += delegate
{
heatmap.RemoveHeatMap();
mAdd.Enabled = true;
mRemove.Enabled = false;
}; await Task.Run(() =>
{
data = new List<LatLng>();
var stream = Resources.OpenRawResource(Resource.Raw.locations);
string json = new Java.Util.Scanner(stream).UseDelimiter("\\A").Next();
try
{
Org.Json.JSONArray array = new Org.Json.JSONArray(json);
for (int i = ; i < array.Length(); i++)
{
Org.Json.JSONObject obj = array.GetJSONObject(i);
double lat = obj.GetDouble("lat");
double lng = obj.GetDouble("lng");
data.Add(new LatLng(lat, lng));
}
}
catch (Java.Lang.Exception e)
{
e.PrintStackTrace();
}
});
mAdd.Enabled = true;
} private void AddHeatMap()
{
mAdd.Enabled = false;
heatmap = new HeatMap.Builder().Data(data).Build();
if (!isDestroy)
{
mBaiduMap.AddHeatMap(heatmap);
}
mRemove.Enabled = true;
} protected override void OnPause()
{
base.OnPause();
mMapView.OnPause();
} protected override void OnResume()
{
base.OnResume();
mMapView.OnResume();
} protected override void OnDestroy()
{
base.OnDestroy();
isDestroy = true;
mMapView.OnDestroy();
}
}
}
3、修改MainActivity.cs
在MainActivity.cs文件的demos字段定义中,去掉【示例10】下面的注释。
运行观察结果。
【Android】3.10 热力图功能的更多相关文章
- 调用Android自带日历功能(日历列表单、添加一个日历事件)
调用Android自带日历功能 觉得这篇文章不错,转载过来. 转载:http://blog.csdn.net/djy1992/article/details/9948393 Android手机配备有 ...
- Android Webview实现文件下载功能
在做美图欣赏Android应用的时候,其中有涉及到Android应用下载的功能,这个应用本身其实也比较简单,就是通过WebView控制调用相应的WEB页面进行展示.刚开始以为和普通的文件下载实 ...
- I.MX6 android 移除shutdown功能
/************************************************************************ * I.MX6 android 移除shutdown ...
- Xamarin.Android 4.10.01068 & Xamarin.iOS 1.8.361
Xamarin.Android 4.10.01068 & Xamarin.iOS 1.8.361 NEW support for Visual Studio 2013 & Portab ...
- 你真的有必要退出吗——再说Android程序的退出功能
转自你真的有必要退出吗--再说Android程序的退出功能 搞Android开发有一段时间了,相信很多从Windows开发过来的Android程序员都习惯性地会跟我一样遇到过同一个问题:如何彻底退出程 ...
- Android使得手机拍照功能的发展(源共享)
Android系统调用手机拍照功能有两种方法来直接调用手机自带摄像头还有一个就是要当心自己的节拍. 例Camera360 强大的一个在每个操作系统都有一个手机摄影软件:您可以捕捉不同风格,不同特效的照 ...
- Android实现自动更新功能
Android实现自动更新功能 Android自动更新的功能可以使用第三方的SDK来实现,但是类似友盟,就不支持x86手机的自动更新,科大讯飞,弹窗是全局的,小米手机就会默认把弹窗权限关掉不允许弹出提 ...
- Android Camera2 预览功能实现
1. 概述 最近在做一些关于人脸识别的项目,需要用到 Android 相机的预览功能.网上查阅相关资料后,发现 Android 5.0 及以后的版本中,原有的 Camera API 已经被 Camer ...
- 微软已发布 Windows 10 Timeline 功能的官方 Chrome 插件
微软已发布 Windows 10 Timeline 功能的官方 Chrome 插件,这个插件名为 Web Activities,功能是跨 Windows 10 和 Microsoft Launcher ...
随机推荐
- android kernel控制台初始化过程
对于我们的android平台,控制台被定义到了串口1上,因此初始化过程就是把控制台的输出配置到串口1上 对kernel控制台初始化是在挂载文件系统之前,由于没有串口的设备文件,不能通过打开设备文件来访 ...
- Linux Bash 脚本:自己定义延迟代码块(裸数据保存方案)
结合 alias 和 read 使用方法.能够保存一些将要延迟执行的脚本,或者裸数据(字符串不被扩展)到一个变量中.以备后用. $ alias BEGIN='read -d "" ...
- windows 配置ftp server
- [Python]网络爬虫(七):Python中的正则表达式教程
转自:http://blog.csdn.net/pleasecallmewhy/article/details/8929576#t4 接下来准备用糗百做一个爬虫的小例子. 但是在这之前,先详细的整理一 ...
- 〖Windows〗Linux的Qt程序源码转换至Windows平台运行,编码的解决
在中国大陆,Windows默认的编码是gb2312,而Linux是UTF8: 多数情况下,把Linux上的程序转换至Windows上运行需要进行编码转换才能正常显示: 而其实大可以不必的,同样,文件使 ...
- python之函数用法divmod
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法divmod #http://python.jobbole.com/81480/ #d ...
- MassiGra045 简体中文化|打开图片很快
MassiGra045 简体中文化,是一款对图片的打开预览很高效的工具,据传是日本开发的. 本人之前一直使用,唯一有点缺点就是不能旋转图片. 图片预览 峰回路转: http://pan.baidu.c ...
- Axure 8.0.0.3312下载地址以及注册码
下载地址: 链接: http://pan.baidu.com/s/1pKMPsJx 密码: gu8t Axure 8.0.0.3312可用注册码(仅供3312版本使用) 用户名:aaa 注册码:2GQ ...
- js firstChild 、nextSibling、lastChild、previousSibling、parentNode
nextSibling下一个兄弟节点 previousSibling上一个兄弟 parentNode父亲节点 <select><option value="zs" ...
- 从使用 KVO 监听 readonly 属性说起
01.KVO 原理 KVO 是 key-value observing 的简写,它的原理大致是: 1.当一个 object(对象) 有观察者时候,动态创建这个 object(对象) 的类的子类(以 N ...