来深圳一年多了,感觉深圳的IT氛围确实比长沙好,工作和生活节奏比较快,适合于学习.来深后一直在现在所在的公司,部门从开始4个人,发展到现在10来人了,感觉还是不错的.

发现自己很少写博客了,倒不是学得比长沙少,只是一般用为知笔记(http://wiz.cn/index.html),因为比较方便快捷.但是还是得写一写了:),一来分享,二来锻炼自己.往后争取每周

分享一点.

这次项目中移动端有一处需求是百度地图截图的上传,开始设计的是上传图片.但是通过查阅百度的API(http://developer.baidu.com/map/staticimg.htm)

发现其新提供了获取静态图的功能.那么接口只需要很少的参数即可实现这个功能.

如:http://api.map.baidu.com/staticimage?center=116.403874,39.914888&width=300&height=200&zoom=15

center:坐标格式lng<经度>,lat<纬度>.也可以是中文名称.

width,height:生成图片的宽高.

zoom:地图级别[3,19].

根据百度"参考"谷歌的习惯,料想谷歌必定有这个功能,想必外国朋友都写好了帮助方法.google一下发现有个正是我需要的:

http://www.codeproject.com/Articles/28492/A-C-Wrapper-for-Google-s-Static-Map-API

英文不错的可以直接看.我按照作者的思路改成了百度的帮助方法的.

根据百度提供了静态图API,主要包括以下功能:

  • PNG格式的地图图片,地图大小、显示范围、缩放级别可设定。
  • 可生成添加多种覆盖物的地图图片,包括普通标注点、自定义样式标注点、标签、折线、多边形。
  • 支持高清地图底图,可更好适配高分屏的移动设备。

本文提供了标注点,标签的方法,但是没有对折现和多边形进行实现.有需要的朋友可自行添加.

下面是类设计图.

地图的参数主要是:

Width:生成静态图的宽.

Height:生成静态图的高.

Latitude:地图纬度.

Markers集合:包括Marker的经纬度,大小,颜色,文字等属性.

Labels集合:包括Labe的经纬度,大小,文字,文字颜色,背景色等属性.

根据百度API提供的属性,将size和color设为其提供的enum类型.

下面的代码会创建一个静态图地址的url:

 var marker = new StaticMapHelper.MapMarker();
var label = new StaticMapHelper.MapLabel(); var map = new StaticMapHelper
{
Width = ,
Height = ,
Zoom = ,
Latitude = 113.989119,
Longitude = 22.557382
};
marker.Latitude = map.Latitude;
marker.Longitude = map.Longitude;
marker.Size = StaticMapHelper.mSize.l;
marker.Color = StaticMapHelper.mColor.Black;
marker.Label = "A";
map.Markers.Add(marker); label.Content = "东方科技园";
label.Border = ;
label.Latitude = map.Latitude;
label.Longitude = map.Longitude;
label.FontSize = ;
label.FontColor = Color.Red;
label.BgColor = Color.Blue;
map.Labels.Add(label);
string url = map.Render();

生成url:

http://api.map.baidu.com/staticimage?center=113.989119,22.557382&zoom=18&weight=300&height=300&markers=113.989119,22.557382&markerStyle=l,black,A&labels=113.989119,22.557382&labelStyles=%E4%B8%9C%E6%96%B9%E7%A7%91%E6%8A%80%E5%9B%AD,1,16,ffff0000,ff0000ff,0

拿到url后,可以用代码保存,方法也很简单.

 using (WebClient wc = new WebClient())
{
wc.DownloadFile(url, saveFile);
}

总结:

这里发现一个百度api的问题,marker的color可以通过颜色的单词设置,但是label的color只能用16进制.

需要用到一个转换:

string.Format("{0:x6}", fColor.ToArgb);

源代码如下:http://files.cnblogs.com/kulong995/StaticMap.7z

C#调用百度静态地图的更多相关文章

  1. Leaflet 调用百度瓦片地图服务

    在使用 leaflet 调用第三方瓦片地图服务的项目,主要谷歌地图.高德地图.百度地图和 OSM 地图,与其他三种地图对比,百度地图的瓦片组织方式是不同的.百度从中心点经纬度(0,0)度开始计算瓦片, ...

  2. 苹果手机 微信调用百度地图Javascript API 频繁闪退问题

    最近在网页中调用百度地图API js大众版,但是在IOS8系统中,缩放的时候频繁闪退,安卓手机没有这个问题! 在网上查询了下,有网友回答说不要频繁的去new marker,而是初始化话一定量的mark ...

  3. Android中调用百度地图

    一.调用百度地图 --第一种方法 1.下载百度地图SDK SDK可以拆分下载,需要使用那一部分功能就下载相应包含的SDK,如下图 核心的的jar 和so包,放在工程中的libs目录下 2.申请key ...

  4. 在XAF(ASP.NET)中以ListEditor的形式调用百度地图API

    因为项目需要,在系统中使用地图显示设备的地理位置.考虑过ArgGIS,Bing和Baidu地图.本来想用ArgGIS,看教程嫌麻烦.所以还是用Web地图吧.Bing的话还要申请个key,没心情.百度地 ...

  5. 调用百度地图Api实现的查看地图功能的小插件

    1. 功能 bMap.js 可根据地理位置调用出百度地图,采用弹出框形式 2.用法 var city = '青岛市'; var address = '香港中路'; bMap.init({ city : ...

  6. 【c#】Form调用百度地图api攻略及常见问题

    首先,在Form中调用百度地图api,我们需要使用webbrowser控件,这个在前面的文章中已经讲过了,可以参照(http://blog.csdn.net/buptgshengod/article/ ...

  7. Delphi XE6 通过JavaScript API调用百度地图

    参考昨天的内容,有朋友还是问如何调用百度地图,也是,谁让咱都在国内呢,没办法,你懂的. 首先去申请个Key,然后看一下百度JavaScript的第一个例子:http://developer.baidu ...

  8. js调用百度地图接口

    原文:js调用百度地图接口 这是前几天公司做的新项目,上面需要用到地图的数据.第一次做这类型的东西没啥思路,咱们经理说,这东西简单,截个图存文件夹里调整好尺寸,数据库里存上图片的地址动态调用就行了.心 ...

  9. Node.js调用百度地图Web服务API的Geocoding接口进行点位反地理信息编码

    (从我的新浪博客上搬来的,做了一些修改.) 最近迷上了node.js以及JavaScript.现在接到一个活,要解析一个出租车点位数据的地理信息.于是就想到使用Node.js调用百度地图API进行解析 ...

随机推荐

  1. 0021 Java学习笔记-面向对象-包、构造器

    封装 面向对象的三大特征: 封装 继承 多态 封装: 将对象的状态信息隐藏,不允许外部程序直接访问 通过该类提供的方法来访问和操作 有啥用: 隐藏类的实现细节 在方法中加入控制逻辑,限制对成员变量的不 ...

  2. Solr术语介绍:SolrCloud,单机Solr,Collection,Shard,Replica,Core之间的关系

    Solr有一堆让人发晕的术语如:collections,shards,replicas,cores,config sets. 在了解这些术语之前需要先做做如下功课: 1)什么是倒排索引? 2)搜索引擎 ...

  3. x01.os.14: 时间都去哪儿了

    时间都去哪儿了 老帕的“花儿为什么这样红”,三分钟引起六次欢呼,却败给了张碧晨.试想一下,如果是人气更高的陈冰,即使唱得和张碧晨一模一样,可能仍然不敌老帕,为什么张碧晨就能取胜呢?有这么个笑话:一人弹 ...

  4. ORA-00020: No more process state objects available故障一例

    今天公司一大早收到通知,昨天数据库数据未生成.当时查看跑批的日志,发现平常只需运行半个小时的过程,今天整整运行了7个小时(明显存在问题),导致后续数据正常时间读取失败.为了了解起因,查看了oracle ...

  5. C语言中内存分配那些事儿

    C程序的内存结构 C语言的之所以复杂,首先它的内存模型功不可没.不像某些那样的高级语言只需要在使用对象的时候,用new创建.所有之后的事情,你不需要操心.对于C语言,所有与内存相关的东西,都需要熟悉, ...

  6. .NET对象的内存布局

    每个虚拟机都有它自己的对象布局,本文我们将针对sscli源码和windbg调试器来查看不同类型的.net对象布局. 在.net虚拟机里,每个对象都需要保存这些信息: 对象的类型: 对象实例的成员属性( ...

  7. css中单位em和rem

    一.介绍 1.em w3cschool中给出css中尺寸单位如下: 单位 描述 % 百分比 in 英寸 cm 厘米 mm 毫米 em 1em 等于当前的字体尺寸. 2em 等于当前字体尺寸的两倍. 例 ...

  8. C#学习笔记-Windows窗体基本功能(Login登录界面)

    本菜鸟由于实习工作的原因,不得不快速接触C#语言,刚刚好又要做毕业设计,所以就通过自学的方式一举两得地完成这两件事情. 故此文字记录或代码中的各种文件名之类均是以毕业设计为模版记录的,看着不方便之处请 ...

  9. 【2016-10-10】【坚持学习】【Day1】【观察者模式】

    今天学习了观察者模式 定义: 一个实体变化会影响其他实体变化 例子: 红绿灯与汽车 红绿灯是观察目标 汽车是实际观察者 灯的变化会影响车是停止还是前进. 例子: 游戏中,一个战队由若干队员组成,当其中 ...

  10. 【温故而知新-Javascript】使用 Ajax(续)

    1. 准备向服务器发送数据 Ajax 最常见的一大用途是向服务器发送数据.最典型的情况是从 客户端发送表单数据,即用户在form元素所含的各个 input 元素里输入的值.下面代码展示了一张简单的表单 ...