1. 程式人生 > >小白如何自己親手製作一個防疫地圖?

小白如何自己親手製作一個防疫地圖?

最近出了好幾個小程式可以檢視你周邊地區當前疫情確診人數的情況,就比如下面這種的:

這張圖對於身為小白的我們可不可以自己做一個呢?

答案當然是肯定的,這裡面涉及到的技術點就是地圖上的那些點是如何標記出來的。

這裡的地圖我們使用騰訊地圖來實現,首先進入到騰訊位置服務的首頁( https://lbs.qq.com/index.html ),進行登入操作,用 QQ 也好微信也好,反正先登入上去。

然後在控制檯中新建一個 key ,這個 key 是專屬於你一個人使用的,所以千萬不要外傳哦~~~

這裡我們新建一個專門用於本次疫情地圖的 key ,名稱輸入完成後,再輸入驗證碼點選提交即可,這時會彈出來了一個讓你去設定 key 的提示。

這裡我們就獲得了自己的 key (小編已刪除此 key ,請不要直接使用小編所建立的 key),點選設定進入設定頁面:

可以看到,這裡可以設定這個 key 所應用的茶品,預設是 JavaScriptAPI ,我們還可以在微信小程式、APP、或者 WebServiceAPI(伺服器呼叫) 中使用。

這裡其實不需要多餘的設定,直接點選儲存即可。我們本次示例所使用到的功能都是最基礎的功能。

key 設定完成後我們看一下騰訊地圖的 API ,這裡主要是看 JavaScript API ,連結:https://lbs.qq.com/javascript_v2/index.html 。

我們本次要用到的功能是覆蓋物,其他的感興趣的同學可以看一看,不感興趣的同學可以直接略過,點開覆蓋物檢視今天的正題。

直接看程式碼好沒意思,點選檢視示例,可以一邊看示例,一邊看程式碼,順手改改,看看能不能正常執行。

點選檢視示例以後,就變成下面這個樣子了:

這裡可以看到他的中心點是在北京,實際上是由這段程式碼來指定的:

    var center = new qq.maps.LatLng(39.916527,116.397128);
    var map = new qq.maps.Map(document.getElementById('container'),{
        center: center,
        zoom: 13
    });

如果小編這裡要改成上海的話只需要修改這裡的座標值即可,那麼上海的座標值我能去哪裡查詢呢?

別急,這裡就要說到今天會用到的另一個功能點,座標拾取器,騰訊也提供了這樣的服務,連結為:https://lbs.qq.com/tool/getpoint/index.html ,他是長這個樣子的:

比如小編這裡將地圖的中心點改成人民廣場地鐵站,那麼直接將上面的座標 Copy 出來,放在剛才的程式碼中再執行一下,就可以看到當前的地圖中心點程式設計了人民廣場。

那麼,接下來的事情就好辦了,我們只需要知道附近的疫情的資料,將這些有疫情的區域全都標記在地圖上就好了,小編這裡就不查真實的疫情情況了,隨便在地圖上取幾個點做演示。

結果就變成了這樣:

接下來問題來了,我們看到的地圖上的標記好像圖形和這個不一樣嘛,這個長得也有點忒醜了點,當然,騰訊地圖給我們提供的 API 同樣支援自定義的 icon ,示例如下:

emmmmmmmmmmm,手頭沒有找到好看一點的 icon ,隨便找了一張代替,大家理解到位就好。

只要我們替換上合適的 icon ,就可以做出和文章最前面那個小程式一樣漂亮的疫情地圖了。

最後的沒有替換 icon 的程式碼小編還是順手貼一下吧:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>疫情地圖</title>
<script charset="utf-8" src="https://map.qq.com/api/js?v=2.exp&key=你的key"></script>
<style type="text/css">
*{
    margin:0px;
    padding:0px;
}
body, button, input, select, textarea {
    font: 12px/16px Verdana, Helvetica, Arial, sans-serif;
}
#info{
    width:603px;
    padding-top:3px;
    overflow:hidden;
}
.btn{
    width:112px;
}
#container{
    min-width:600px;
    min-height:767px;
}
</style>
<script>
var init = function() {
    var center = new qq.maps.LatLng(31.232708,121.475537);
    var map = new qq.maps.Map(document.getElementById('container'),{
        center: center,
        zoom: 13
    });
    //建立marker
    var marker = new qq.maps.Marker({
        position: new qq.maps.LatLng(31.232105,121.481667),
        map: map
    });
    
  
    //建立marker
    var marker = new qq.maps.Marker({
        position: new qq.maps.LatLng(31.235114,121.471281),
        map: map
    });
    //建立marker
    var marker = new qq.maps.Marker({
        position: new qq.maps.LatLng(31.227261,121.480465),
        map: map
    });
    //建立marker
    var marker = new qq.maps.Marker({
        position: new qq.maps.LatLng(31.226821,121.471796),
        map: map
    });
    //建立marker
    var marker = new qq.maps.Marker({
        position: new qq.maps.LatLng(31.216545,121.467419),
        map: map
    });
    //建立marker
    var marker = new qq.maps.Marker({
        position: new qq.maps.LatLng(31.216839,121.480808),
        map: map
    });
    //建立marker
    var marker = new qq.maps.Marker({
        position: new qq.maps.LatLng(31.218454,121.492825),
        map: map
    });
    
}
</script>
</head>
<body onload="init()">
<div id="container"></div>
</body>
</html>

這裡只需要替換一個可用的 key 即可使用。

到這裡,你可以把所有已經有確診患者小區的經緯度獲取到,然後全部標註到地圖上,每天對標註進行實時更新,這樣就製作成了一張防疫地圖了,有興趣的同學可以自己去嘗試嘗試。

實際上騰訊地圖上還有很多很好玩的同時也很炫酷的功能,如以下圖形:

大家可以自己去探索