เพิ่ม lib function/Control .ใหม่ให้กับ OpenLayers

Standard

คุณเคยไหมที่ประสบปัญหา อย่างได้แบบนั้น แบบนี้แต่ OpenLayers ไม่มีให้ ไม่เป็นคุณแก้มันได้เพราะมันเป็น FOSS นั้นเอง ทำเหมือนมาขายของสะงั้น

วันนี้ก็มาเล่าถึงการเพิ่ม function หรือ Control ใหม่ ๆ ให้กับ OpenLayers ว่าต้องทำอย่างไรดีนะ

ก็ไม่ยากถ้าสังเกตดี ๆ OpenLayers ได้จัดการโครงสร้างต่าง ๆ ไว้อย่างค่อนข้างดี (อาจเพราะระบบการพัฒนา ของ สามหัวแรงหลักของคนพัฒนานั้น แบ่งแยก แต่มาประกอบกันในที่สุด)

เริ่มแรกจะเห็นว่าใน directory OpenLayers จะมี directory ย่อย ๆ ตาม Structure แล้วมีไฟล์ เหมือนชื่อ Directoryเช่น Control.js , Handle.js ส่วนใหญ่แล้วเราไม่จำเป็นต้องแก้ไขไฟล์นี้

ถ้าเราต้องการเพิ่ม function ใหม่ใน Control ก็ให้สร้าง ไฟล์ js ใน Control directory เช่น Control/NewBox.js

เมื่อทำการสร้างแล้วก็ไปเพิ่มให้ OpenLayers โหลดด้วยในไฟล์ OpenLayers.js มันก็จะถูกโหลดขึ้นมาเมื่อเริ่ม

แต่สิ่งสำคัญอย่างนึง หากเราต้องการสร้าง Control ไม่ใช่แค่ Function ผมหมายถึงเป็นปุ่มแสดงบน Map เหมือน icon ของ zoom,pan, DrawPoint เราจำเป็นต้องไปแก้ไข ไฟล์ theme ให้สร้าง CSS ที่เราจะใช้ว่าขนาดเท่าไร ใช้ icon อะไร

แต่มีบางอย่างที่แปลก ผมทำการแก้ไขไฟล์ theme/default/style.css แก้แล้วแก้อีกมันก็ไม่เปลี่ยน ถึงแม้เราจะระบุ ค่า theme ใน options ของ map contruct แล้วก็ตาม (ลองลบไฟล์มันไปมันยังโหลดมาได้เลย งง มาก)
ก็เลยลองสร้างไฟล์ใหม่เป็น theme/default/newstyle.css แล้วระบุค่าใน theme option ของ map คราวนี้ใช้การได้ ก็แปลกดี

ก็ตามนี้นะครับ ก็ต้องบอกก่อนว่านี้เป็นครั้งแรกผมลองทำอาจจะมี bug หรือข้อผลาดอย่างไร ถ้าพบจะมาบันทึกไว้อีกที