แสดงเหตุการณ์และกล้องจราจร

เหตการณ์

Longdo Map มีระบบรวบรวมเหตุการณ์สำคัญต่างๆ ที่เกิดขึ้น เช่น อุบัติเหตุ, น้ำท่วม, ก่อสร้าง หรือ การจราจรหนาแน่น ซึ่ง Longdo Map SDK ก็มีคำสั่งเพื่อเรียกเหตุการเหล่านั้นขึ้นมาแสดง โดยเรียกใช้คำสั่ง Map.overLaysLoad()

ldmap.overLaysLoad(Map.OVERLAYS.EVENT, null, 1, 20);

กล้องจราจร

การแสดงกล้องจราจรก็ทำได้โดยใช้คำสั่งเดียวกัน แต่เปลี่ยน parameter เป็นกล้องจราจร

ldmap.overLaysLoad(Map.OVERLAYS.CAMERA, null, 1, 20);

ข้อมูลเหตุการณ์และกล้องจราจร

เมื่อสามารถแสดงกล้องจราจรและเหตุการบนแผนที่ได้แล้ว สิ่งต่อมาที่นักพัฒนามักต้องการก็คือ การแสดงข้อมูลต่างๆ ของเหตุการณ์ หรือการเข้าไปดู live stream ของกล้องจราจร ซึ่งข้อมูลเหล่านี้จะอยู่ในรูปแบบ JSON ซึ่งสามารถอ่านได้จาก tag ของหมุดแต่ละตัว สิ่งที่ต้องทำเพิ่มเติมคือสร้าง listener (ตัวอย่างก่อนหน้าเป็นค่า null คือคลิกที่หมุดแล้วไม่มีผลอะไร) และอ่านข้อมูลจากด้านใน listener นั้น

ldmap.overLaysLoad(Map.OVERLAYS.CAMERA, new IPinListener() {
    @Override
    public boolean onPinClick(Pin pin, Pin[] pins) {
        String json = pin.getTag();
        Log.d("camera-json",json);

        return true;
    }

    @Override
    public boolean onLongClickPin(Pin pin, Pin[] pins) {
        return false;
    }

    @Override
    public boolean onPinDoubleClick(Pin pin, Pin[] pins) {
        return false;
    }
}, 1, 20);

โดยตัวอย่างนี้จะอ่าน JSON เมื่อหมุดเหตุการณ์ถูกคลิด ข้อมูล JSON ที่ได้จะมีลักษณะดังนี้

ข้อมูลเหตุการณ์

{
    "eid":"506358",
    "title":"ปิดเบี่ยงจราจร 1 ช่องขวา คลองตาสาด ถึง ซอยศรีนครินทร์ 61",
    "title_en":"Warning at Srinagarindra Rd.",
    "description":"ตั้งแต่วันที่ 25 มิถุนายน 2561 เวลา 22.00 น. เป็นต้นไป ทางโครงการฯ มีความจำเป็นต้องปิดเบี่ยงจราจร 1 ช่องทางขวา (ชิดเกาะกลาง) ฝั่งขาเข้า และฝั่งขาออก บริเวณคลองตาสาด ถึง ซอยศรีนครินทร์ 61 เพื่อเตรียมงานรื้อย้ายระบบสาธารณูปโภค \r\nทั้งนี้ต้องขออภัยในความไม่สะดวกด้วยนะคะ และฝากผู้ใช้เส้นทางขับขี่ด้วยความระมัดระวังด้วย \r\n\r\nข้อมูลจาก รฟม.",
    "description_en":"One right lane closed due to civil construction from Khlong Tasad Bridge to Soi Srinagarindra 61 on Srinagarindra Rd., at 10.00 pm.-04.00 am., on June 25, 2018 onward.\r\n\r\nCr. MRTA",
    "latitude":"13.683294543002",
    "longitude":"100.64659282565",
    "type":"event",
    "start":"2018-06-25 00:00:00",
    "stop":"2019-06-25 23:59:59",
    "contributor":"itic.iyarin",
    "icon":"warning"
}

ส่วนข้อมูล JSON ของกล้องจราจรจะมี 3 แบบดังนี้

ภาพเคลื่อนไหวแบบ HLS

{
    "title":"สาทร หน้าตึกไบเออร์ไทย",
    "link":"http:\/\/bma-itic1.iticfoundation.org\/mjpeg2.php?camid=103.3.67.15-2",
    "camid":"ITICM_BMAMI0034",
    "lastupdate":"2018-10-15 15:12:00",
    "latitude":"13.720398",
    "longitude":"100.525236",
    "incity":"Y",
    "organization":"ITIC Motion",
    "sponsertext":"ITIC Motion",
    "motion":"Y",
    "vdourl":"http:\/\/bma-itic1.iticfoundation.org\/mjpeg2.php?camid=103.3.67.15-2",
    "imgurl":"http:\/\/bma-itic1.iticfoundation.org\/jpeg2.php?camid=103.3.67.15-2",
    "imgurl_specific":"http:\/\/bma-itic1.iticfoundation.org\/mjpeg2.cgi?camid=103.3.67.15-2",
    "hls_url":"http://bma-itic1.iticfoundation.org/hls/10.8.0.14_8551.m3u8",
    "type":"camera"
}

*กล้องที่รองรับมาตรฐาน HLS จะมีค่า hls_url ไม่เป็น null และสามารถใช้ VideoView ของ Android แสดงผลได้เลย

ตัวอย่างเช่น

ในไฟล์ XML

<VideoView
    android:id="@+id/camera_hls_player"
    android:layout_width="match_parent"
    android:layout_height="200dp" />

ในไฟล์ Java

VideoView playerView = findViewById(R.id.camera_hls_player);
playerView.setVideoURI(Uri.parse("http://bma-itic1.iticfoundation.org/hls/10.8.0.14_8551.m3u8"));
playerview.start();

ภาพเคลื่อนไหวแบบ MJPEG

{
    "title":"สาทร หน้าตึกไบเออร์ไทย",
    "link":"http:\/\/bma-itic1.iticfoundation.org\/mjpeg2.php?camid=103.3.67.15-2",
    "camid":"ITICM_BMAMI0034",
    "lastupdate":"2018-10-15 15:12:00",
    "latitude":"13.720398",
    "longitude":"100.525236",
    "incity":"Y",
    "organization":"ITIC Motion",
    "sponsertext":"ITIC Motion",
    "motion":"Y",
    "vdourl":"http:\/\/bma-itic1.iticfoundation.org\/mjpeg2.php?camid=103.3.67.15-2",
    "imgurl":"http:\/\/bma-itic1.iticfoundation.org\/jpeg2.php?camid=103.3.67.15-2",
    "imgurl_specific":"http:\/\/bma-itic1.iticfoundation.org\/mjpeg2.cgi?camid=103.3.67.15-2",
    "hls_url":null,
    "type":"camera"
}

*vdourl เป็นวิดีโอรูปแบบ mjpeg ต้องใช้ library พิเศษในการแสดงผลบนแอพพลิเคชั่น เช่น android-mjpeg-view

ภาพเคลื่อนไหวแบบ GIF

{
    "title": "215 - อ.เมืองสรวง จ.ร้อยเอ็ด",
    "link": "https://camera.longdo.com:443/feed/index.php?command=showlast&camcode=PER-9-013-1&amp;show=html",
    "camid": "PER-9-013-1",
    "lastupdate": "2018-12-23 17:51:00",
    "latitude": "15.783892",
    "longitude": "103.727966",
    "incity": "N",
    "organization": "กรมทางหลวง",
    "sponsertext": "สำนักอำนวยความปลอดภัย กรมทางหลวง",
    "motion": "N",
    "vdourl": "",
    "imgurl": "https://camera.longdo.com:443/feed/index.php?command=showlast&camcode=PER-9-013-1",
    "hls_url":null,
    "imgurl_specific": ""
}

*imgurl เป็นภาพเคลื่อนไหวแบบ GIF สามารถใช้ WebView ของ Android เพื่อแสดงผลได้เลย

ตัวอย่างการนำเหตุการณ์และกล้องจราจรไปแสดง

แอพพลิเคชั่น Longdo Map Android

กลับหน้าหลัก