C#调用百度静态地图
来深圳一年多了,感觉深圳的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:
拿到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#调用百度静态地图的更多相关文章
- Leaflet 调用百度瓦片地图服务
在使用 leaflet 调用第三方瓦片地图服务的项目,主要谷歌地图.高德地图.百度地图和 OSM 地图,与其他三种地图对比,百度地图的瓦片组织方式是不同的.百度从中心点经纬度(0,0)度开始计算瓦片, ...
- 苹果手机 微信调用百度地图Javascript API 频繁闪退问题
最近在网页中调用百度地图API js大众版,但是在IOS8系统中,缩放的时候频繁闪退,安卓手机没有这个问题! 在网上查询了下,有网友回答说不要频繁的去new marker,而是初始化话一定量的mark ...
- Android中调用百度地图
一.调用百度地图 --第一种方法 1.下载百度地图SDK SDK可以拆分下载,需要使用那一部分功能就下载相应包含的SDK,如下图 核心的的jar 和so包,放在工程中的libs目录下 2.申请key ...
- 在XAF(ASP.NET)中以ListEditor的形式调用百度地图API
因为项目需要,在系统中使用地图显示设备的地理位置.考虑过ArgGIS,Bing和Baidu地图.本来想用ArgGIS,看教程嫌麻烦.所以还是用Web地图吧.Bing的话还要申请个key,没心情.百度地 ...
- 调用百度地图Api实现的查看地图功能的小插件
1. 功能 bMap.js 可根据地理位置调用出百度地图,采用弹出框形式 2.用法 var city = '青岛市'; var address = '香港中路'; bMap.init({ city : ...
- 【c#】Form调用百度地图api攻略及常见问题
首先,在Form中调用百度地图api,我们需要使用webbrowser控件,这个在前面的文章中已经讲过了,可以参照(http://blog.csdn.net/buptgshengod/article/ ...
- Delphi XE6 通过JavaScript API调用百度地图
参考昨天的内容,有朋友还是问如何调用百度地图,也是,谁让咱都在国内呢,没办法,你懂的. 首先去申请个Key,然后看一下百度JavaScript的第一个例子:http://developer.baidu ...
- js调用百度地图接口
原文:js调用百度地图接口 这是前几天公司做的新项目,上面需要用到地图的数据.第一次做这类型的东西没啥思路,咱们经理说,这东西简单,截个图存文件夹里调整好尺寸,数据库里存上图片的地址动态调用就行了.心 ...
- Node.js调用百度地图Web服务API的Geocoding接口进行点位反地理信息编码
(从我的新浪博客上搬来的,做了一些修改.) 最近迷上了node.js以及JavaScript.现在接到一个活,要解析一个出租车点位数据的地理信息.于是就想到使用Node.js调用百度地图API进行解析 ...
随机推荐
- Servlet/JSP-06 Session
一. 概述 Session 指客户端(浏览器)与服务器端之间保持状态的解决方案,有时候也用来指这种解决方案的存储结构. 当服务器端程序要为客户端的请求创建一个 Session 时,会首先检查这个请求里 ...
- 前端构建工具gulp介绍
2016年3月3日 10:46:08 晴 前端构建工具gulpjs的使用介绍及技巧 gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非常简 ...
- linux添加开机自启动脚本示例详解
linux下(以RedHat为范本)添加开机自启动脚本有两种方法,先来简单的; 一.在/etc/rc.local中添加如果不想将脚本粘来粘去,或创建链接什么的,则:step1. 先修改好脚本,使其所有 ...
- 2------------NLPIR(ICTCLAS2016)分词系统添加用户词典功能
备注:win7 64位系统,netbeans编程 基本代码框架参见我的另一篇文章:NLPIR分词功能 代码实现: package cwordseg; import java.io.Unsupporte ...
- linux基础-第七单元 用户、群组及权限的深入讨论
怎样查看文件的权限 ls命令详解 root用户及文件的安全控制 什么是root用户 用户分类 文件操作权限 文件操作权限的字符表示 chown chgrp 使用符号表示法设定文件或目录上的权限 chm ...
- JAVA-android 更改APP名称与图标
首先要在你的资源文件放入你想换的图标图片拖到drawable-XX文件夹下,然后你打开AndroidManifest.xml这个配置清单文件找到application标签里的这句android:ico ...
- 解决Python2.7的UnicodeEncodeError: 'ascii' codec can’t encode异常错误
import sys reload(sys) sys.setdefaultencoding('utf-8') 好了,通过上面短短的三行,我们算是很好的解决了这个问题了,同样的方式也可以应用到Unico ...
- oracle--trunc与to_char的区别
trunc取得是天(可比较),而to_char取得是数值(可计算): 但trunc(date) 具有与to_char(date) 相似的功能,但有区别: trunc(sysdate,'cc') ...
- linux /proc/sys/fs/file-nr /proc/sys/fs/file-max /etc/security/limits.conf 三者的关联
ulimit -n 对应 /etc/security/limits.conf 文件设置 问题: Can’t open so many files 对于linux运维的同学们,相信都遇到过这个问题. 在 ...
- Linux 中如何卸载已安装的软件(转载)
Linux 中如何卸载已安装的软件. Linux软件的安装和卸载一直是困扰许多新用户的难题.在Windows中,我们可以使用软件自带的安装卸载程序或在控制面板中的“添加/删除程序”来实 ...