แสดงเหตุการณ์และกล้องจราจร
เหตการณ์
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&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