當前位置:
首頁 > 最新 > 給你的地圖點燈

給你的地圖點燈

曾經坐在飛機上俯瞰整個北京城,在萬米高空上可以看到北京的全貌,即使是凌晨一兩點,北京依然燈火通明,儼然是一座不眠之城。四通八達的交通線彷彿是這座城市的血脈,裡面流淌著的,是生活在這裡的人們的夢想。

然而,今天要講的不是北京,也不是夢想。今天要講的是我們該如何在地圖上點起一盞燈,就像夜幕下的北京城一樣。

為了方便理解,我們先看一下最終的實現效果。

最終效果.png

沒錯,就是要在夜幕下,放幾盞燈,告訴別人這塊區域目前有人正在裡面工作。

在講解如何實現這種效果前,先分享一下之前的那種存在問題的思路。

之前的做法是:

位於底部的陰影區域當做一個大的 PolygonView ,並且充滿屏幕。

位於上面的高亮區域當做另外的 PolygonView ,依次添加,並設置它們的背景色與透明度,模擬高亮。

然而這樣做會產生一個無法避免的問題,那就是無論我們怎麼設置高亮區域的背景色與透明度,都不夠好看:透明度低的時候,就看不到下面的地圖,透明度高的時候,雖然能看到下面的地圖,但是卻霧蒙蒙的,彷彿那片高亮區域,被霧霾籠罩了。。

被霧霾籠罩的效果圖.png

那麼問題來了,如何讓大晚上還在工作的人們,少呼吸點霧霾呢。

思路其實很簡單,只需要換個角度來思考就可以了,那就是我們不再分別繪製高亮區域和底部的全屏陰影區域,而是只需要繪製一個陰影區域就可以了,這樣剩下的沒有繪製的區域自然就是沒有霧霾的。 對,再說一遍,只需要繪製一個陰影區域就可以。 先來一張圖:

繪製過程分解.png

屏幕的四個點分別是

S1、S2、S3、S4

,兩個高亮區域分別是

區域A

區域B

,區域A的四個點分別是A1、A2、A3、A4,區域B的四個點分別是B1、B2、B3、B4。我們要繪製的就是除去

區域A,區域B

後,把剩下的那部分當做一個

PolygonView

來繪製。(注意:這裡所說的點是指經緯度點,而不是point點)

So ,如何得到陰影區域的 Polygon :

首先聲明一個經緯度數組 CLLocationCoordinate2D * coors ,用來存放區域坐標點。

先從 S1點 開始,將其加入到 coors 中,下一個點是 A1點 ,然後依次添加 A2、A3、A4 。

添加完 A4 後, 一定要再將 A1點 加一遍,以構成一個閉環,而不是直接去添加區域B的點,此時 A1點 被添加了兩遍。

接著添加 區域B 的點,先是 B1點 ,然後依次添加 B2、B3、B4 。

添加完 B4 後,像 區域A 一樣,一定要再添加一遍 B1點 ,以構成閉環。此時 B1點 被添加兩遍。

由於此時只有兩個區域,所以添加完 B1點 後,我們需要返回,這裡需要注意的一定要原路返回。所以需要再添加一遍 A1點 ,此時 A1點 被添加了3遍(注意:非屏幕邊界點最多被添加三遍)。

接著我們需要再次添加 S1點 ,也就是說從 S1點 ,出去轉了一圈後,最後必須回到 S1點 。此時 S1點 被添加2遍。(注意:屏幕邊界點最多被添加2遍)。 *最後再依次添加 S2、S3、S4 點構成閉環就可以了。

總結一下規律,我們需要從屏幕

四個角的任意一個點

開始,假設是

S1點

,然後依次添

區域A、區域B、區域C

等的點,區域點添加完一圈後,

一定要把區域的第一個點再添加一遍,然後再去添加另一個區域的點

,添加完後,

依然要再加一遍該區域的第一個點

,如果當前區域是

最後一個

區域了,那麼添加完後,

需要讓它原路返回

,也就是說

除了最後一個區域的起點是填加兩遍

其他區域的起點都是添加三遍

再添加一遍屏幕的S1點

,最後就是按照順時針或者逆時針添加屏幕的剩餘三個點。

這樣我們就只需要繪製這麼一個整合後的陰影區域就可以了。由此就實現了我們的去霧霾目的。

過程有點繞,可能不太好理解,那怎麼辦,多看幾遍然後自己試一試就可以了。demo還是之前的給你的地圖模塊動手術的demo。代碼比較多,但是卻很簡單,所以文章里就不寫代碼了,本文介紹的關鍵在於這種思路,使用的時候,只需要借鑒思路,對數據的處理,需要你自己搞定。並且這種思路是通用的,移動端與web端都適用。

好吧,作者比較懶,三篇文章,只留下了一個demo。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 輕芒 的精彩文章:

關於俄勒岡州葡萄酒的10個事實
2016年力士金城堡:可能是擁有佳釀的唯一機會
寫一篇遊記—新加坡 出行全記錄
男神,老公送什麼?用遊戲保證解你萬愁!
北歐風 黑色啞光異形餐具

TAG:輕芒 |

您可能感興趣

給他一塊玻璃,讓他給你點顏色瞧瞧
脫髮人士注意了!點點教給你頭髮的正確清洗方式!
不點穿,是給你留點面子
好的電影通常很慘,只給你一點點的甜頭
見多了冷清的北歐風,給你點顏色瞧瞧
不就是給你澆了點水、淋了點雨么,你至於這麼傲嬌嗎?
「大姑的紅包塞你枕頭下面了,可別給你媽說」
誰說木地板只能鋪地?老紙偏要爬上牆給你看看!
吶 給你一點溫暖 就一點
都這個點兒了,給你看點壓箱底兒的……
時尚新中式設計,給你點「顏色」看看!
還在小瞧我?那就給你點顏色看看!
給你自己留一點臉吧
聽說你喜歡街頭美到炸裂的塗鴉?來,這份地圖送給你
在通向地球地心的途中你會看到什麼?給你科普一下
鸚鵡與貓咪搶食,遭貓咪怒扇巴掌,不給你吃點苦頭你都有點飄了!
給你的春天,加一點點詩意
給你的婚姻加點糖
素食的她們,「給你點顏色看看」!
中國最美的油菜花要開了,賞花地圖送給你!