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

基于百度地圖API的反向遮罩功能的實現*

2017-09-03 09:17:08
網絡安全與數據管理 2017年15期
關鍵詞:百度區域用戶

牛 倩

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

基于百度地圖API的反向遮罩功能的實現*

牛 倩

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

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

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

0 引言

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

1 需求分析

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

2 相關技術分析

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

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

mDistrictSearch = DistrictSearch.newInstance();

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

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

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

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

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

3 實現

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

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

// 區域點集合

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個邊界點,Fj表示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)。區域CDEF遠超中國邊界,所以在用戶實際使用時,陰影的邊界是感知不到的。

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

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)根據現有坐標列表繪制遮罩層。如圖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右是最終提供給用戶的使用了反向遮罩功能展示太原市迎澤區內空氣質量分布的效果。滿足了用戶的實際需求。具體的實現代碼和清晰的運行截圖已經上傳至網絡,可以通過網絡查看[6]。

圖3 反向遮罩示意圖

5 結論

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

[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的反向遮罩功能的實現[J].微型機與應用,2017,36(15):100-102.

2017-03-12)

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

猜你喜歡
百度區域用戶
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
關于四色猜想
分區域
百度遭投行下調評級
IT時代周刊(2015年8期)2015-11-11 05:50:22
基于嚴重區域的多PCC點暫降頻次估計
電測與儀表(2015年5期)2015-04-09 11:30:52
如何獲取一億海外用戶
創業家(2015年5期)2015-02-27 07:53:25
主站蜘蛛池模板: a毛片基地免费大全| 亚亚洲乱码一二三四区| 亚洲,国产,日韩,综合一区| 亚洲专区一区二区在线观看| 國產尤物AV尤物在線觀看| 一级福利视频| 99精品视频九九精品| 亚洲综合精品第一页| 精品国产自在在线在线观看| 欧美日韩在线观看一区二区三区| 国产凹凸视频在线观看| a级毛片一区二区免费视频| 色婷婷亚洲综合五月| 国产精品一区在线观看你懂的| 国产综合网站| 久久婷婷五月综合色一区二区| 国产精品3p视频| 日韩AV无码一区| 久久久久久尹人网香蕉| 强乱中文字幕在线播放不卡| 99视频精品在线观看| 啪啪啪亚洲无码| 99999久久久久久亚洲| 亚洲综合第一页| 在线欧美国产| 亚洲女人在线| 亚洲人成网站在线观看播放不卡| 国产精品久久久久婷婷五月| 国产福利小视频高清在线观看| 亚洲欧美一区二区三区蜜芽| 538精品在线观看| 在线观看的黄网| 深爱婷婷激情网| 欧美亚洲激情| 人人妻人人澡人人爽欧美一区| 亚洲国产中文欧美在线人成大黄瓜 | 不卡国产视频第一页| 秘书高跟黑色丝袜国产91在线 | 国产成人综合在线视频| 国产日韩欧美中文| 色噜噜中文网| 波多野结衣一区二区三区四区| 久久永久视频| 日韩高清无码免费| 亚洲天堂日韩av电影| 人妻丰满熟妇αv无码| 国产av无码日韩av无码网站| 亚洲天堂777| 99精品在线看| 成人午夜精品一级毛片| 国产精品不卡片视频免费观看| 91精品在线视频观看| 在线亚洲小视频| 久草视频精品| 国产麻豆精品在线观看| 亚洲一区国色天香| 亚洲系列无码专区偷窥无码| 亚洲精品视频免费看| 国产网站黄| 国产人在线成免费视频| 中文字幕亚洲专区第19页| 在线观看视频99| 久草青青在线视频| 996免费视频国产在线播放| 91久久国产综合精品女同我| 免费观看三级毛片| 无码精品福利一区二区三区| 欧美精品aⅴ在线视频| 欧美性猛交xxxx乱大交极品| 亚洲天堂久久| 中美日韩在线网免费毛片视频| 亚洲av无码牛牛影视在线二区| 久操线在视频在线观看| 亚洲天堂免费| 日韩区欧美国产区在线观看 | 97超爽成人免费视频在线播放| 少妇极品熟妇人妻专区视频| 欧美亚洲一二三区| 亚洲最大福利网站| 欧美色99| 四虎国产精品永久一区| 亚洲一区精品视频在线|