來深圳一年多了,感受深圳的IT氛圍確實比長沙好,工做和生活節奏比較快,適合於學習.來深後一直在如今所在的公司,部門從開始4我的,發展到如今10來人了,感受仍是不錯的.html
發現本身不多寫博客了,倒不是學得比長沙少,只是通常用爲知筆記(http://wiz.cn/index.html),由於比較方便快捷.可是仍是得寫一寫了:),一來分享,二來鍛鍊本身.日後爭取每週git
分享一點.api
此次項目中移動端有一處需求是百度地圖截圖的上傳,開始設計的是上傳圖片.可是經過查閱百度的API(http://developer.baidu.com/map/staticimg.htm)app
發現其新提供了獲取靜態圖的功能.那麼接口只須要不多的參數便可實現這個功能.學習
如:http://api.map.baidu.com/staticimage?center=116.403874,39.914888&width=300&height=200&zoom=15google
center:座標格式lng<經度>,lat<緯度>.也能夠是中文名稱.url
width,height:生成圖片的寬高.spa
zoom:地圖級別[3,19].設計
根據百度"參考"谷歌的習慣,料想谷歌一定有這個功能,想必外國朋友都寫好了幫助方法.google一下發現有個正是我須要的:3d
http://www.codeproject.com/Articles/28492/A-C-Wrapper-for-Google-s-Static-Map-API
英文不錯的能夠直接看.我按照做者的思路改爲了百度的幫助方法的.
根據百度提供了靜態圖API,主要包括如下功能:
本文提供了標註點,標籤的方法,可是沒有對摺現和多邊形進行實現.有須要的朋友可自行添加.
下面是類設計圖.
地圖的參數主要是:
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 = 300, Height = 300, Zoom = 18, 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 = 1; label.Latitude = map.Latitude; label.Longitude = map.Longitude; label.FontSize = 16; 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);