Google Map V3 on Openlayers

_____ปีนี้มีซอฟต์แวร์ใหม่ๆหลายตัวที่มีการ update รุ่นใหม่ๆออกมาให้ผู้ใช้ได้ใช้งาน ข้อดีคือการปรับปรุงคุณภาพและแก้ไข ข้อผิดพลาดต่างๆให้ดียิ่งขึ้น ซอฟต์แวร์หลายๆตัวที่ผมใช้ทำงานและเป็น Opensource ก็มีการปรับปรุงด้วยเช่นกันแสดงถึงการพัฒนาอย่างต่อเนื่องและการมีกลุ่มผู้พัฒนาที่เข้มแข็ง หลายคนที่เลือกใช้ซอฟต์แวร์ Opensource ต้องตระหนักถึงเรื่องความต่อเนื่องในการพัฒนาของซอฟต์แวร์เป็นอันดับแรก เพราะหมายถึงการจะมีนักพัฒนาช่วยบำรุงรักษาซอฟต์แวร์ GIS ของเรา แต่แน่นอนว่านักพัฒนาหรือผู้ใช้ต้อง alert เพื่อปรับตัวเรียนรู้สิ่งใหม่ๆตลอดเวลา

_____ดังที่ผมเคยได้เขียนถึง Google Map V3 ที่ออกมาล่าสุดที่เน้นความรวดเร็วของการทำงานของ Javascript API และลดเรื่องขนาดไฟล์และตัดเรื่องรหัส API Key ออกไป รวมถึงการพัฒนาให้ API ทำงานได้ทั้ง desktop และ mobile platform ทำให้ตอนนี้นักพัฒนาหลายที่ใช้ GoogleMap API ต่างก็มี feed back ที่ดีดังจะเห็นได้ตาม forum ต่างๆที่กว่าถึง แน่นอนว่าปัจจุบันการพัฒนาระบบ Web GIS หนีไม่พ้นที่ต้องเชื่อมต่อระบบกับ Google Map เพื่อดึงข้อมูลจาก Google Data Service ทั้ง POI ,ถนน,ภาพถ่ายดาวเทียม เมื่อ Google Map API ทำการ Upgrade ทำให้ซอฟต์แวร์ Web GIS จึงต้อง Update ตามไปด้วย วันนี้ผมมีขั้นตอนการใช้ Openlayers กับ Google Map V3 มาแนะนำ โดยการเขียนโปรแกรมบน OL API ในส่วนการเชื่อมต่อ กับ Google Map Class มีการเปลี่ยนแปลงไปดังนี้

1. การ include ตัว Google Map API tag บน HTML จะใช้รูปแบบดังนี้

<script src=”http://maps.google.com/maps/api/js?sensor=false”></script

2. ส่วนการเขียนโปรแกรมสำหรับ layer ของ Google Map API ก็จะเปลี่ยนจากเดิมไปเป็นดัง code ข้างล่างนี้

   map = new OpenLayers.Map('map');
   var gphy = new OpenLayers.Layer.Google(
        "Google Physical",
        {type: google.maps.MapTypeId.TERRAIN}
    );
    var gmap = new OpenLayers.Layer.Google(
        "Google Streets", // the default
        {numZoomLevels: 20}
    );
    var ghyb = new OpenLayers.Layer.Google(
        "Google Hybrid",
        {type: google.maps.MapTypeId.HYBRID, numZoomLevels: 20}
    );
    var gsat = new OpenLayers.Layer.Google(
        "Google Satellite",
        {type: google.maps.MapTypeId.SATELLITE, numZoomLevels: 22}
    );

    map.addLayers([gphy, gmap, ghyb, gsat]);

3. อีกประเด็นที่สำคัญยิ่งและพบปัญหาบ่อยคือระบบพิกัด Spatial Reference system(SRS) เนื่องจาก Google Map V3 ใช้ EPSG: 900913 คือ Mercator projection ดังนั้นการกำหนดระบบพิกัดต้องใส่ให้ถูก ถ้าไม่มันใจท่านสามารถใช้ Projection Transform Class สำหรับแปลงจากระบบปกติของเมืองไทย EPSG:4326 ไปเป็น EPSG:900913 ได้ดังนี้ครับ

var mypoint = new OpenLayers.LonLat(100.23, 18.9).transform(
        new OpenLayers.Projection("EPSG:4326"),
        map.getProjectionObject()
    )

ภาพแสดง Openlayer กับ Google Map API V 3

การทดสอบประสิทธิภาพการรับส่งข้อมูลระหว่าง Server

______สรปคือไม่ยาก สั้นและกระฉับกว่าการใช้ Openlayer.Layer เดิมที่ต้องระบบ type และ พารามิเตอร์ ยังไงก็ไปทดลองดูกันได้ performance ค่อนข้างจะดีกว่าของ Google Map V2 และที่สำคัญอนาคต Openlayers จะออก V3 คิดว่าน่าจะมีการปรับปรุง API ใหม่คงจะมีอะไรอีกหลายอย่างที่รองรับและเข้ากับ Google Map V3 อีกแน่นอนครับ

Advertisements

One thought on “Google Map V3 on Openlayers

Add yours

  1. สวัสดีค่ะ พอดีมีข้อสงสัยเกี่ยวกับ Googlemap ที่เสียค่าใช้จ่ายค่ะ ว่าถ้าเราดึงservice ของ google map โดยผ่าน openlayer อย่างนี้ต้องเสียค่าใช้จ่ายหรือเปล่าค่ะ แล้วถ้าใช้แบบเสียค่าใช้จ่าย ความระเอียดของภาพถ่ายจะดีกว่าหรือเปล่าค่ะ

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s

บลอกที่ WordPress.com .

Up ↑

%d bloggers like this: