分类: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 热力图功能的更多相关文章

  1. 调用Android自带日历功能(日历列表单、添加一个日历事件)

    调用Android自带日历功能  觉得这篇文章不错,转载过来. 转载:http://blog.csdn.net/djy1992/article/details/9948393 Android手机配备有 ...

  2. Android Webview实现文件下载功能

        在做美图欣赏Android应用的时候,其中有涉及到Android应用下载的功能,这个应用本身其实也比较简单,就是通过WebView控制调用相应的WEB页面进行展示.刚开始以为和普通的文件下载实 ...

  3. I.MX6 android 移除shutdown功能

    /************************************************************************ * I.MX6 android 移除shutdown ...

  4. 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 ...

  5. 你真的有必要退出吗——再说Android程序的退出功能

    转自你真的有必要退出吗--再说Android程序的退出功能 搞Android开发有一段时间了,相信很多从Windows开发过来的Android程序员都习惯性地会跟我一样遇到过同一个问题:如何彻底退出程 ...

  6. Android使得手机拍照功能的发展(源共享)

    Android系统调用手机拍照功能有两种方法来直接调用手机自带摄像头还有一个就是要当心自己的节拍. 例Camera360 强大的一个在每个操作系统都有一个手机摄影软件:您可以捕捉不同风格,不同特效的照 ...

  7. Android实现自动更新功能

    Android实现自动更新功能 Android自动更新的功能可以使用第三方的SDK来实现,但是类似友盟,就不支持x86手机的自动更新,科大讯飞,弹窗是全局的,小米手机就会默认把弹窗权限关掉不允许弹出提 ...

  8. Android Camera2 预览功能实现

    1. 概述 最近在做一些关于人脸识别的项目,需要用到 Android 相机的预览功能.网上查阅相关资料后,发现 Android 5.0 及以后的版本中,原有的 Camera API 已经被 Camer ...

  9. 微软已发布 Windows 10 Timeline 功能的官方 Chrome 插件

    微软已发布 Windows 10 Timeline 功能的官方 Chrome 插件,这个插件名为 Web Activities,功能是跨 Windows 10 和 Microsoft Launcher ...

随机推荐

  1. ZH奶酪:PHP解析URL及parse_url、parse_str、explode、implode函数说明

    首先看一下解析任意URL的代码: (1)获取协议类型:例如参考链接中的:http (2)获取主机地址:例如参考链接中的:my.oschina.net (3)获取当前页面在服务器的路径:例如参考链接中的 ...

  2. [置顶] Zend Optimizer 和 Zend Debugger 同时安装

    下载地址: Zend Optimizer:  http://download.csdn.net/detail/wf120355/6479947 Zend Debugger: http://downlo ...

  3. less 命令(转)

    原文:http://www.cnblogs.com/peida/archive/2012/11/05/2754477.html less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux ...

  4. spring 中常用的配置项

    1.spring 中常用的配置项 application.properties #端口 server.port=8081 #调试模式 debug=false #上下文 #一般情况下,小项目通常都是在t ...

  5. Python C/C++ 拓展使用接口库(build-in) ctypes 使用手册

    Python C/C++ 拓展使用接口库(build-in) ctypes 使用手册 ctypes 是一个Python 标准库中的一个库.为了实现调用 DLL,或者共享库等C数据类型而设计.它可以把这 ...

  6. WordPress 主题教程:从零开始制作 WordPress 主题

    为什么要开发WordPress主题? WordPress主题由一系列文件和样式表单组成,这些文件和样式表单共同作用生成WordPress网站的外观.每个主题都不同,用户可以通过这些主题随心所欲地更换自 ...

  7. 【laravel5.4】php artisan migrate报错:Specified key was too long; max key length is 767 bytes

    1.原因:在进行 迁移文件生成时,程序并未给varchar类型字段设置 合适的长度,导致报错. 2.解决办法:找到database/ 目标迁移文件,修改其中类型为string的字段长度,建议不要超过2 ...

  8. 更安全的HTTPS

    iOS9把所有的http请求都改为https了:iOS9系统发送的网络请求将统一使用TLS 1.2 SSL.采用TLS 1.2 协议,目的是 强制增强数据访问安全,而且 系统 Foundation 框 ...

  9. 【LeetCode】45. Jump Game II

    Jump Game II Given an array of non-negative integers, you are initially positioned at the first inde ...

  10. Linux卸载NAS磁盘,报device is busy

    # umount /data umount.nfs: /data: device is busy umount.nfs: /data: device is busy # fuser -m -v /da ...