999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于百度地圖API的反向遮罩功能的實現(xiàn)*

2017-09-03 09:17:08
關鍵詞:百度區(qū)域用戶

牛 倩

(山西大學 軟件學院,山西 太原 030013)

基于百度地圖API的反向遮罩功能的實現(xiàn)*

牛 倩

(山西大學 軟件學院,山西 太原 030013)

百度地圖作為目前市場占有率最高的開放地圖平臺,基本可以滿足大部分產品的使用需求,但是對于個性化的需求卻實現(xiàn)困難,例如實現(xiàn)地圖的反向遮罩功能。文章實現(xiàn)了一種通過簡單的二次開發(fā)即可實現(xiàn)基于百度地圖應用程序接口的反向遮罩功能。

百度地圖;開放接口;反向遮罩

0 引言

由于單獨開發(fā)一個地圖類服務的產品成本非常昂貴[1],所以大部分產品都選擇使用第三方的電子地圖服務。在中國,提供電子地圖服務的公司中,市場占有率較高的有百度地圖[2]、高德地圖、搜狗地圖等,其中目前市場占有率最高的是百度地圖[3]。百度地圖擁有豐富的功能,基本可以滿足大多數(shù)地圖類服務產品的使用需求。通過調用百度地圖應用程序接口(Application Programming Interface, API),開發(fā)者不需要自備大量地圖數(shù)據(jù),可以便捷地進行地圖類應用的開發(fā),極大地降低了開發(fā)成本。但是使用現(xiàn)有的百度地圖開放接口卻不能實現(xiàn)反向遮罩功能。本文以百度地圖Android軟件開發(fā)工具包(Software Development Kit, SDK)為例,通過簡單的二次開發(fā),實現(xiàn)了反向遮罩功能。

1 需求分析

在給地方政府各級部門研發(fā)產品(例如:可再生能源分布情況,或者空氣質量指數(shù)分布情況)時,用戶希望可以對其所屬行政區(qū)域以外的區(qū)域進行遮罩,以便用戶可以快速找到行政區(qū)域的邊界,快速了解自己負責的區(qū)域的可再生能源分布情況,或者空氣質量指數(shù)分布情況。

2 相關技術分析

與上述需求相關的百度地圖API有以下兩個接口:

(1) boolean search District(District Search Option var1)[4],這個接口提供行政區(qū)邊界數(shù)據(jù)檢索功能。根據(jù)省、市、縣(區(qū))級行政區(qū)劃名稱,查詢行政區(qū)劃的詳細邊界信息。示例代碼如下:

mDistrictSearch = DistrictSearch.newInstance();

mDistrictSearch.searchDistrict(new DistrictSearchOption().cityName(city).districtName(district));

(2) Overlay addOverlay(OverlayOptions var1)[5],通過這個接口可以實現(xiàn)點(Dot)、折線(Polyline)、弧線(Arc)、圓(Circle)、多邊形(Polygon)多種圖形的遮罩功能。上述需求可以通過接口1獲得的行政區(qū)域便捷信息來繪制多邊形遮罩。示例代碼如下:

OverlayOptions polygonOption = new PolygonOptions().points(pts).stroke(new Stroke(5, 0xAA00FF00)).fillColor(0xAAFFFF00);

但是通過接口2并不能完全滿足用戶需求。接口2可以給指定的行政區(qū)域添加半透明遮罩,這樣,會讓用戶關注的行政區(qū)域顏色加深而高亮了用戶不關注的區(qū)域(如圖1左圖所示),這與用戶需求是完全相反的(如圖1右圖所示)。圖1中是以太原市迎澤區(qū)空氣質量顯示為例,通過接口1獲得太原市迎澤區(qū)的邊界信息,直接使用接口2繪制多邊形即得到圖1中左圖效果,與用戶要求的右圖效果相反。而現(xiàn)有的百度地圖API并不提供直接可使用的接口。為了解決這一問題,本文設計并實現(xiàn)了基于百度地圖API的反向遮罩功能。

圖1 百度地圖API效果與用戶需求效果對比

3 實現(xiàn)

實現(xiàn)反向遮罩功能需要以下4步,并在每一步后附上基于百度地圖Android SDK實現(xiàn)的代碼。

(1) 找到該坐標列表中的最右邊的坐標點I(如圖2中點I),點I表示為(Iw,Ij),其中Iw表示點I的緯度,Ij表示點I的經度。

// 區(qū)域點集合

List boundLatLngs = new ArrayList<>();

// 找右側極值

int longMaxIndx = 0;

LatLng longMax = latLngList.get(0).get(0);

for (List latLngs : latLngList) {

if (latLngs == null || latLngs.size() == 0) {

continue;

}

for (LatLng latLng : latLngs) {

boundLatLngs.add(latLng);

if (latLng.longitude > longMax.longitude) {

longMax = latLng;

longMaxIndx = boundLatLngs.size() - 1;

}

}

}

圖2 反向遮罩示意圖

(2) 調整坐標列表順序,調整為從最右邊的邊界點(點I)開始逆時針順序的坐標列表。

List latLngsTemp = new ArrayList<>();

latLngsTemp.addAll(boundLatLngs.subList(longMaxIndx, boundLatLngs.size()));

latLngsTemp.addAll(boundLatLngs.subList(0, longMaxIndx));

(3) 添加7個點(A到G)到坐標列表末尾。其中點C、D、E、F為地圖的4個邊界點,F(xiàn)j表示F點的經度。點A的坐標為(Iw-0.00000001,Ij),點B的坐標為(Iw-0.00000001,Fj),點G的坐標為(Iw,Ij)。

在圖2中,為了方便理解,地圖邊界點縮小到可視范圍,并在圖中標出,實際使用的邊界點為C(10, 150)、D(10, 60)、E(60, 60)、F(60, 150)。區(qū)域CDEF遠超中國邊界,所以在用戶實際使用時,陰影的邊界是感知不到的。

在圖2中,線AB和線IG的未遮罩區(qū)域為了方便理解放大了2 000 000倍,實際使用時,這個未遮罩區(qū)域在地圖放大到最大級別時只有一個像素大小,不影響用戶使用。

latLngsTemp.add(new LatLng(latLngsTemp.get(0).latitude-0.00000001, latLngsTemp.get(0).longitude));

latLngsTemp.add(new LatLng(latLngsTemp.get(0).latitude-0.00000001, 150));

latLngsTemp.add(new LatLng(10, 150));

latLngsTemp.add(new LatLng(10, 60));

latLngsTemp.add(new LatLng(60, 60));

latLngsTemp.add(new LatLng(60, 150));

latLngsTemp.add(new LatLng(latLngsTemp.get(0).latitude, 150));

(4)根據(jù)現(xiàn)有坐標列表繪制遮罩層。如圖2所示,陰影部分即為反向遮罩層。

OverlayOptions ooPolygon = new PolygonOptions().points(latLngsTemp).stroke(new Stroke(1,context.getResources().getColor(R.color.map_overlay))).fillColor(context.getResources().getColor(R.color.map_overlay));

baiduMap.addOverlay(ooPolygon);

4 測試

最終的效果如圖3所示。圖3左為使用反向遮罩的效果,圖3右是最終提供給用戶的使用了反向遮罩功能展示太原市迎澤區(qū)內空氣質量分布的效果。滿足了用戶的實際需求。具體的實現(xiàn)代碼和清晰的運行截圖已經上傳至網(wǎng)絡,可以通過網(wǎng)絡查看[6]。

圖3 反向遮罩示意圖

5 結論

本文基于百度地圖API的addOverlay和searchDistrict兩個開放接口在Android平臺實現(xiàn)了對行政區(qū)域的反向遮罩功能,這個實現(xiàn)方法同樣適用于其他地圖服務,以及其他封閉圖形的反向遮罩功能。但目前這一版本的反向遮罩功能還是不能完全滿足用戶需求。用戶有時并不是關注行政區(qū)域全部的地區(qū),而是它的一部分。例如,太原整個行政區(qū)域很大,但在空氣質量監(jiān)控時,用戶更關注的是太原市城區(qū)(太原市六城區(qū))的空氣質量分布。基于這個需求,在下一版本的開發(fā)中,希望添加區(qū)域合并功能,即給定多個區(qū)域(太原市六個城區(qū)分別的坐標),對這幾個區(qū)域進行合并,并對這幾個區(qū)域以外的部分進行遮罩。

[1] 成功,楊亞. 主流地圖應用程序接口在地圖質量和實用功能上的對比分析[J]. 地理信息世界,2016,23(5):41-45.

[2] Baidu. 百度地圖開放平臺[EB/OL]. (2017-02-23) [2017-03-01].http://lbsyun.baidu.com/.

[3] 羅超. 百度地圖這十年如何一步步干掉了強悍的對手[EB/OL]. (2016-12-26) [2017-02-01].http://luochao.baijia.baidu.com/article/277207.

[4] Baidu. 基礎地圖Android SDK[EB/OL]. (2017-02-23) [2017-03-01].http://lbsyun.baidu.com/index.php?title=androidsdk/guide/basicmap.

[5] Baidu. 檢索功能Android SDK[EB/OL]. (2017-02-23) [2017-03-01].http://lbsyun.baidu.com/index.php?title=androidsdk/guide/retrieval.

[6] 牛倩. AddReverseOverlay[EB/OL]. (2017-03-04) [2017-03-04].http://git.oschina.net/qian.n/AddReverseOverlay.

Implementation of adding reverse overlay function based on Baidu map API

Niu Qian

(College of Software, Shanxi University, Taiyuan 030013, China)

Baidu maps as the highest market share of the open map platform, has rich function, basically can meet the needs of most of the software, but for the personalized requirement is difficult to implement. For example to implement the adding reverse overlay function. This paper implemented it by a small amount of secondary development based on Baidu map open API(Application Programming Interface).

Baidu map; open API; reverse overlay

山西省科技基礎條件平臺計劃項目(2013091002-0108)

TP311.1

A

10.19358/j.issn.1674- 7720.2017.15.029

牛倩.基于百度地圖API的反向遮罩功能的實現(xiàn)[J].微型機與應用,2017,36(15):100-102.

2017-03-12)

牛倩(1987-),女,碩士研究生,助教,主要研究方向:軟件工程。

猜你喜歡
百度區(qū)域用戶
Robust adaptive UKF based on SVR for inertial based integrated navigation
百度年度熱搜榜
青年與社會(2018年2期)2018-01-25 15:37:06
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
關于四色猜想
分區(qū)域
百度遭投行下調評級
IT時代周刊(2015年8期)2015-11-11 05:50:22
基于嚴重區(qū)域的多PCC點暫降頻次估計
電測與儀表(2015年5期)2015-04-09 11:30:52
如何獲取一億海外用戶
主站蜘蛛池模板: 日本国产精品| 国产精品深爱在线| 黄色网页在线播放| V一区无码内射国产| 99尹人香蕉国产免费天天拍| 全午夜免费一级毛片| 国产极品美女在线观看| 99ri国产在线| 在线va视频| 国产网站免费看| 国产av无码日韩av无码网站| 丰满的少妇人妻无码区| 九九视频在线免费观看| 国产成人免费高清AⅤ| 国产欧美日韩视频一区二区三区| 亚瑟天堂久久一区二区影院| jijzzizz老师出水喷水喷出| 精品撒尿视频一区二区三区| 亚洲av无码成人专区| 九九视频免费看| 亚洲欧美在线看片AI| 欧美激情伊人| 亚国产欧美在线人成| 欧美精品导航| 红杏AV在线无码| 亚洲天堂久久久| 成人日韩精品| 亚洲高清免费在线观看| 成人无码一区二区三区视频在线观看| 国产三级韩国三级理| 亚洲成在人线av品善网好看| 99精品视频在线观看免费播放| 欧美精品啪啪| 最新国产你懂的在线网址| 国产小视频a在线观看| 欧美色综合久久| 亚洲无码高清视频在线观看 | 99久久精彩视频| 亚洲成人免费看| 亚洲日韩日本中文在线| 538国产视频| 亚洲三级视频在线观看| 国产人前露出系列视频| 亚洲高清日韩heyzo| 亚洲综合色婷婷| 在线中文字幕日韩| 国产一级毛片在线| 欧美国产综合视频| 亚洲无码91视频| 亚洲第一页在线观看| 欧美日韩国产综合视频在线观看| 天天摸夜夜操| 欧美日本在线播放| 国产AV无码专区亚洲A∨毛片| 亚洲大尺码专区影院| 国产一级一级毛片永久| 99福利视频导航| 精品视频一区在线观看| 高清久久精品亚洲日韩Av| 91小视频在线观看| 免费毛片视频| 不卡午夜视频| 精品福利视频导航| 天天视频在线91频| 国产亚洲精品无码专| 日韩欧美网址| 国产一区成人| 国产哺乳奶水91在线播放| 亚洲aaa视频| 国产永久在线观看| 人妻91无码色偷偷色噜噜噜| 欧美A级V片在线观看| 99久久精彩视频| 免费一级成人毛片| a在线亚洲男人的天堂试看| 日韩无码视频网站| 伊人色综合久久天天| 欧美天堂久久| 一本色道久久88亚洲综合| 露脸真实国语乱在线观看| 亚洲高清中文字幕| 激情亚洲天堂|