Random Thoughts on Random Things by Tanomsak
Random header image... Refresh for more!

การหาเส้นทางโดย Google Maps API (GDirections)

31 Jan 2010

เมื่อสองสามวันก่อน มี comment ถามมาว่า “อยากทราบว่าสามารถทำ google map บอกระยะทางได้ไหมค่ะ เช่น จากกรุงเทพไปเชียงใหม่เป็นระยะทางเท่าไหร่” ผมก็ตอบไปสั้นๆ วันนี้ขอขยายความเรื่องการหาเส้นทาง และการหาระยะทางจากจุดสองจุดในโดยใช้ Google Maps API ครับ เรื่องนี้เป็นเรื่องที่หลายๆคนสนใจ และเวปใหม่ที่ผมกำลังซุ่มทำอยู่ก็ใช้เยอะมากครับ

ใครอ่านภาษาอังกฤษคล่อง และต้องการข้อมูลแบบละเอียด ผมแนะน ลองอ่าน document ของ Google นะครับ http://code.google.com/apis/maps/documentation/services.html#Directions

เรามาเริ่มกันเลยดีกว่าครับ อ้อ! วิธีการข้างล่างจะเ็ป็นของ API v2 นะครับ เพราะว่าคนส่วนใหญ่คงยังใช้งาน version 2 กันอยู่

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"  xmlns:v="urn:schemas-microsoft-com:vml">
  <head>
    <title>Google Maps JavaScript API Example: Simple Directions</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAeNsNnRXUdrpgSw3qfvhz5hRHchrjOSPM-moa2HMmJZw-0fE6VhTsARfVd9x1Dg8TowZALqHIOcO20g"
      type="text/javascript"></script>
    <script type="text/javascript">
	// Create a directions object and register a map and DIV to hold the
    // resulting computed directions

    var map;
    var directionsPanel;
    var directions;

    function initialize() {
      map = new GMap2(document.getElementById("map_canvas"));
      map.setCenter(new GLatLng(13.998, 100.5009), 15);
      directions = new GDirections(map);
      directions.load("from: 14.068, 100.6009 to: 13.8152, 100.5606"});
   }
  </script>
  </head> 

  <body onload="initialize()">
    <div id="map_canvas" style="width: 70%; height: 480px; float:left; border: 1px solid black;"></div>
    <br/>
  </body>
</html>

source code ข้างบนผมเอามาจาก Tutorial ของ Google ครับ การใช้ GDirection ง่ายมากครับ โดย code ส่วนที่เกี่ยวข้องจริงๆคือบรรทัดที่ 19-20

directions = new GDirections(map);
directions.load("from: 14.068, 100.6009 to: 13.8152, 100.5606");

บรรทัดที่ 19 เป็นการสร้าง GDirections และระบุว่าให้แสดงเส้นทางใบแผนที่ที่เราสร้างไว้ก่อนหน้านี้
บรรทัดที่ 20 เป็นการเรียกใช้บริการหาเส้นทางจาก Google โดยเราระบุ จุดเริ่มต้นกับปลายทาง

การระบุจุดเริ่มต้นกับปลายทาง สามารถระบุเป็ืนชื่อสถานที่ก็ได้นะครับ แต่ผมว่ามันไม่ค่อยแม่นเนื่องจาก Google ต้องตีความสถานที่ก่อน และระบบ reverse-geocode สำหรับของไทยยังไม่สมบูรณ์ครับ

แค่นี้เราก็จะได้เส้นทางเ็ป็น Polyline บนแผนที่ของเราแล้วครับ

ถ้าต้องการให้ มีข้อความบอกเส้นทางด้วย แบบว่า “ตรงไป 2 กม. แล้วเลี้ยวซ้าย” ก็ทำได้ง่ายๆครับ โดยสร้าง div สำหรับแสดงผลขึ้นมาแล้วระบุตอน new GDirections แบบนี้ครับ


directionsPanel = document.getElementById("route");
directions = new GDirections(map, directionsPanel );
directions.load("from: 14.068, 100.6009 to: 13.8152, 100.5606", {locale: 'th'});

ตรง {locale: ‘th’} เป็นการบอกว่าให้แสดงข้อความเป็นภาษาไทยครับ

ดูตัวอย่างการใช้หาเส้นทางจาก Google Maps API http://tanomsak.com/tutorial-7.html

Update: ตัวอย่างสำหรับกรณีมีจุดหมายสองจัดครับ http://tanomsak.com/tutorial-7_1.html

ถ้าผมอธิบา่ยตรงไหนไม่เข้าใจ แนะนำได้ใน Comment เหมือนเดิมนะครับ

  • Ice_pon
    ขอบคุณสำหรับความรู้ครับ ผมขอถาม ข้อนึง ครับ

    ถ้าเรามี marker อยู่บนmap อยู่แล้ว เวลาผู้ใช้ get direction จากจุดหนึ่ง ไปอีกจุดหนึง

    เราสามารถรู้ได้มั้ยครับ ว่า เส้นทางนั้น มี marker อะไรอยู่บ้าง

    ขอบคุณ นะครั บ
  • tanomsak
    ถ้าจะหา จุดที่อยู่ระหว่างทาง ต้องให้ทาง server-side ช่วยครับ

    การที่ server จะหาจุดที่อยู่ใกล้ๆเส้นทางของเราได้ต้องใช้ความสามารถพวก GIS ครับ ลองดู http://postgis.refractions.net/ ครับอันนี้ฟรี แต่ต้องใช้ DB เป็น postgresql ครับ

  • Mochi_sa
    จะค้นหาเส้นทางโดยใช้ textbox รับค่า lat/long แล้วSearch ต้องใช้ยังไงค่ะ...พอดีไม่มีความรู้พวกภาษา sript

  • Wave
    อยากจะขอปรึกษาครับ คือ ใน Google map ที่เราสร้างขึ้น เรามีจุดเริ่มต้น สิ้นสุด แล้วสร้างเส้นทาง Userสามารถลากเส้นจากเดิมไปเส้นทางอื่นได้ ผมต้องการจะ Save เส้นทาง ที่ User ได้แก้ไขนี้ หลังจากนั้น พอ Edit ขึ้นมา ให้แสดงเส้นทางเดิมที่เขาได้ Save ไปน่ะครับ พอจะมีวิธีหรือเปล่าครับ ขอบคุณครับ
  • tanomsak
    ก่อนอื่น ถามเป็นความรู้ก่อนครับ ว่าทำไงถึงให้ user แก้เส้นทางได้เหรอครับ แบบว่า drag เส้นแล้ว re-route ใหม่เลยเหรอครับ

    ก่อนเรื่อง save ผมไม่เคยคิดเรื่องนี้เหมือนกันครับ ผมว่าอาจจะต้อง เก็บค่าแต่ละ step จาก directionResult.routes[0].legs[0] ไว้ครับ อันนี้อยู่บนสมมติฐานว่า เส้นทางที่ user เปลี่ยนถูก re-route ด้วย Google Maps API นะครับ
  • Wave
    ตอบคำถามครับ ในการให้ user แก้ไขเส้นทางได้ คือ เมื่อเรา Gen Direction แล้ว ให้ Add Marker เข้าไปครับ Marker ตัวนี้ จะ Show ตอนที่เราเอา เมาส์ไป วางบน เส้นทางครับ จากนั้น User ก็ Drag Marker ตัวนี้ไปวางตำแหน่งอื่น พอ Dragend ก็ให้สั่ง Load direction ใหม่โดย โหลดจากเริ่มต้น ไป point ของ Marker แล้ว ไป จุดสิ้นสุดครับ(ประมาณนี้ครับ)
    ส่วน การ save ผม save step + Point ให้อยู่ในรูป XML ครับ เวลาโหลด ก็ไปอ่าน XML มา Gen Direction ครับ(ประมาณนี้ครับ การ save XML อาจ save ลงไฟล์ หรือ ลง Column ใน DB ก็ได้ครับ)
  • tanomsak
    สุดยอดครับ ขอบคุณสำหรับความรู้ครับ :)
  • เอ็ม
    ผมก็ติดปัญหาเหมือนกันเลยครับ คือ โหลด แผนที่เส้นทางจากจุด A ไป B แล้ว แล้วต้องการเปลี่ยนไปทางอื่น แต่จุดเริ่มสิ้นสุดก็ยังเป็นจุดเดิม พอเราลากเม้าท์แล้ว ยังไม่สามารถคำนวณเส้นทางใหม่ได้เลย ว่าเลี้ยวซ้าย ขวา ตรงจุดไหนบ้าง
  • Wave
    ให้สั่ง load Direction ใหม่เลยครับ ตามรายละเอียดที่ผมตอบใว้ด้านบนครับ
  • tanomsak
    เท่าที่ผมลองหาๆดูเหมือนตัว API จะไม่ support ครับ ถ้าจะทำคงต้องมี technique บางอย่างครับ
  • SHT13
    สวัสดีครับ ตอนนี้ผมก็วัดระยะจากจุดไปอีกจุดก็ได้แล้วนะครับแต่ถ้าอยากแสดง ละติจูด ลองจิจูด ตามเมาท์นี่ทำได้ยังไงครับ
    แบบว่าเลื่อนเมาท์แลล้วก็แสดงตำแหน่งด้วยแบบ real time
  • tanomsak
    ลองดู event mousemove ครับ น่าจะใช้ได้

    http://code.google.com/apis/maps/documentation/javascript/v2/reference.html#GMap2.mousemove
  • SHT13
    โอ้ได้แล้วครับ ผมให้เลื่อนตาม mousemove ได้ล่ะครับขอบคุณมากๆเลย
    GEvent.addListener(map, "mousemove", function (point) {
    window.status = "พิกัดจุดแผนที่ (" + point.x + "," + point.y + ")";

    });
    อันนี้เป็นตัวที่ผมลอง ทดสอบก่อนสรุปว่าได้ครับ
    แต่ตอนนี้ผมทำเพิ่มครับทำในส่วนของ customs control เดี๋ยวจะลองทำตามเนื้อหาในเวปนี้ก่อนนะครับคุณพี่
  • SHT13
    อืมแต่ผมชอบจินตนาการโปรแกรมเป็นโจทย์ต่างๆที่ผมคิดเองแต่ก็ไม่ค่อยได้ทำเท่าไร่นะครับคือพอศึกษาจริงๆมันก็มีให้ศึกษาเยอะจนบางทีก็ท้อเหมือนกันครับ อยากทราบประวัติพี่ตั้งแต่เรียนจบแล้วก็ตอนนี้ปัจจุบัน 30 ปีผมขอเป็นความรู้หน่อยนะครับแบบ ย่อก็ได้ครับพี่ถนอมศักดิ์
  • tanomsak
    จริงๆผมก็ไม่ได้เชี่ยวชาญอะไรเป็นพิเศษครับ ผมว่าศึกษาเท่าที่ได้ใช้ แล้วลงมือทำเลยครับ ระหว่างทางก็จะรู้เองว่าต้องรู้อะไรเพิ่มเติมครับ

    ผมเรียนจบวิศวกรรมไฟฟ้าจากที่เกษตรครับ แล้วก็ต่อโทคอมที่เกษตรเหมือนกัน ระหว่างเรียนโทผมทำงานอยู่ NECTEC ครับ แล้วก็ไปทำงานเป็นวิศวกรอยู่บริษัทต่างชาติ ในวงการโทรคมนาคมอีกสองสามแห่ง จนออกมาทำเวปเต็มเวลาครับ :)
  • SHT13
    ขอบคุณมากครับที่ให้คำแนะนำ ผมจะพยายามดูครับผมทำเกี่ยวกับ web base ครับหวังว่าผมจะทำให้ประสบความสำเร็จนะครับ
    จริงๆผมก็อยากเป็นอาจารย์เหมือนกันว่าจะสอนเกี่ยวกับสอนเขียนโปรแกรมแต่ตอนนี้ยังห่างไกลมากๆเพราะเพื่อนผมที่เก่งๆเค้าเริ่มเขียนมานานแหละครับส่วนผมก็ต้องขยันต่อไป(ผมชอบ web ประมาณนี้นนะครับซักวันผมก็จะมาเผยแพร่ความรู้ผมแบบนี้เหมือนกันเพราะอยากให้คนอื่นได้รับความรู้โดยไม่ต้องเสียค่าใช้จ่าย)ขอบคุณอีกครั้งครับ
  • SHT13
    ก่อนอื่นผมต้องขอขอบคุณเจ้าของ web site นี้ด้วยนะครับที่แบ่งปันความรู้ประสบการณ์ที่ดีมากๆแต่ผมอยากได้คำแนะนำครับคือ
    ไม่รู้ผมคิดไปเองหรือป่าวครับผมจะสามารถชำนาญด้านโปรแกรมเมอร์ได้ไหมครับคือผมเรียนจบวิศวกรมมคอมพิวเตอร์รัฐบาลแห่งหนึ่งแต่เดี๋ยวนะครับผมตอนเรียนผมยังไม่ทราบว่าตัวเองชอบอะไรแต่ผมเพิ่งจะหันมาจับโปรแกรมตอนเรียน ปี 3 แล้วที่นี้ผมคิดว่าผม
    ก็พอรู้โปรแกรมพื้นๆครับตอนนี้เรียนจบแล้วยังไม่ได้โปรอะไรหรอกครับแล้วแบบนี้ผมจะสามารถทำงานโปรแกรมเมอร์ได้ไหมครับ
    ถ้าถามว่าผมชอบไหมก็50-50เพราะถ้าเป็นโปรแกรมพื้นๆผมคิดได้หมดนะครับแต่ถ้าโปรแกรมโปรมาหน่อยนี่ก็ต้องศึกษานานพอสมควร ตอนนี้ผมก็ทำโปรแกรมด้านนี้ที่พี่อธิบายไว้ในเว็ปนี้ครับ ผมอยากได้รับคำแนะนำครับว่าผมจะสามารถทำมันได้ไหมเพราะมันได้แค่โปรแกรมพื้นๆอะครับแต่ตอนเรียนผมยังไม่ใส่ใจกับโปรแกรมเท่าไร่ที่นี้พอผมจบมาทำงานแล้วผมจะยังสามารถทำได้ไหมครับ
  • tanomsak
    ถ้ามีพื้นมาบ้างคงทำได้ไม่ยากหรอกครับ ถ้ามี logic ในการคิดแก้ปัญหา การเขียนโปรแกรมก็ไม่ยากครับ เรื่องภาษาในการเขียนอย่าไปยึดติดมากครับ เพราะว่าอะไรๆมันก็เปลี่ยนเร็ว ศึกษาเท่าที่ต้องใช้ แล้วก็ลงมือทำเลยครับ
  • tachiro
    ถ้าต้องการ แค่ ระยะทาง มาว่าระยะทางเท่าไร แล้วจะนำค่ามาใช้ จะเขียนอย่างไง ค่ะ
  • tanomsak
    ลองดู method getDistance แทน load ครับ หารายละเอียดได้ที่ link ข่างล้างครับ

    http://code.google.com/apis/maps/documentation/javascript/v2/reference.html#GDirections.getDistance
  • TOm
    พี่คับถ้าผม จะทำค้นหาตำแหน่งหมุดที่อยู่บนแผนที่ ต้องใช่ฟังชั่นอะไรหรอ งับ
  • tanomsak
    ใช้ method getLatLng() ครับ เช่น

    marker.getLatLng().lat() จะได้ค่า lat ลองดูที่

    http://code.google.com/apis/maps/documentation/javascript/v2/reference.html#GMarker.getLatLng
  • หลิว
    พี่คะแล้วถ้าต้องการทำ GDirections โดยเอาข้อมูลของฐานข้อมูลตัวเองอ่ะค่ะ
    คือ เข้าไปอ่าน Document มันแล้วหนูไม่เข้าใจอ่ะค่ะ

    ไม่รู้ว่าต้องสร้าง fucntion อะไรบ้างอ่ะค่ะ

    ขอบคุณค่ะพี่
  • shoka
    อยากทราบว่า หากเราต้องการดึงเส้นทางจาก google maps มาใช้ ในแผนที่ ของเรา
    เราจะต้องใช้โคดอย่างไรในการดึงเส้นทางคะ
  • tanomsak
    ถ้าแผนที่ ของเรา หมายถึงแผนที่ที่สร้างจาก Google Maps API ในเวปของเรา ก็สามารถทำได้โดยใช้ GDirections API ตามตัวอย่างข้างบนครับ แต่ถ้าหมายถึงแผนที่อื่น อาจจะทำไม่ได้ครับ
  • khwan
    ถ้าต้องการลบหรือเพิ่ม จุดมาร์ค ทำไงค่ะ
  • tanomsak
    ถ้าต้องการเพิ่มจุด หรือลบจุด จากการหา้เส้่นทาง คิดว่าคงต้องเรียก directions.load ใหม่โดย เพิ่ม/ลด จุึดออก

    เช่นถ้า่ต้องการเพิ่ม ก็ใส่ "to: xx,xx" เข้าไปแบบนี้ครับ

    directions.load("from: 14.068, 100.6009 to: 13.8222, 100.54 to: 13.8222, 100.34 to: 13.8152, 100.5606", {locale: 'th'});

    หรือจะใช้ function loadFromWaypoints แทน แล้วใส่ input ของจุดต่างๆเป็น array แทนการใช้ string ยาวๆครับ การใช้งานเป็นแบบนี้

    ถ้าต้องการเพิ่มจุด หรือลบจุด จากการหา้เส้่นทาง คิดว่าคงต้องเรียก directions.load ใหม่โดย เพิ่ม/ลด จุึดออก

    เช่นถ้า่ต้องการเพิ่ม ก็ใส่ "to: xx,xx" เข้าไปแบบนี้ครับ

    var waypoint = ["14.068, 100.6009", "13.8222, 100.54", "13.8222, 100.34", "13.8152, 100.5606"];
    directions.loadFromWaypoints(waypoint, {locale: 'th'});

    แล้วก็เพิ่ม/ลด จุดใน array แล้วก็ Load ใหม่ครับ

  • mie
    สงสัยอ่ะคร๊ะ กูเกิลจะใช้เมตตอดอะรัยคร๊ะ ในการคำนวณเส้นทาง จากจุด A ไป B
    ถ้า สมมุติว่า การเดินทางจากจุด A ไป B แต่ ณ สถานที่ตรงนั้น เป็น ลักษณะวงเวียนสี่เหลี่ยม
    แร้วจุด A กะ จุด B อยู่คนละด้านกัน
    โดยที่ระยะทางจากด้านซ้ายแระด้านขวาของจุด A สามารถไปจุด B ได้

    กูเกิลจะคำนวณเลือกไปทางไหนอ่ะคร๊ะ แระทำมั้ยถึงเลือกด้านนั้นอะคร๊ะ
    มีวิธีคิดยังไงอ่ะคร๊ะ


    คำถามนี้โดนอาจารย์ถามมาอ่ะคร๊ะ ตอน present เรย งงมากๆ
    รบกวนด้วยนะคร๊ะ
  • mie
    แระการเชื่อมต่อ กะ ดาต้าเบส ต้องทำยังไงอ่ะคร๊ะ
  • tanomsak
    ผมเคยเขียนวิธีดึงข้อมูลจาก db ไว้ครับ อันนี้เป็นวิธีที่ผมใช้ครับ

    http://www.tanomsak.com/index.php/2008/12/google-maps-overlay1/
  • mie
    ตอนนี้ เชื่อมต่อ ดาต้าเบสได้แร้วอ่ะคร๊ะ ต้องขอบคุณพี่มากเรยนะคร๊ะ

    แต่กะมีปันหาอีกนิสอ่ะคร๊ะ ^^"

    ปันหาแรก มี่ เปลี่ยนหมุด เป็นรูปภาพ ได้แร้ว แต่ได้แค่รูปเดียว จาก 4 รูปอ่ะคร๊ะ ไม่ทราบว่าเป็นเพราะรูปรึเป่า แต่กะนามสกุลเขียนกันหมดทุกรูปนะคร๊ะ ข้อมูลที่เรียกมาจากดาต้าเบสกะถูก โค้ดกะไม่เออเรอนะคร๊ะ

    ปันหาที่สอง คือมี่จะให้ คนที่เข้ามาใช้เว็บ สามารถ หาเส้นทางจาก สถานที่ ที่เขาพิมพ์เข้าไป From. . . To . . . แร้วแสดงเส้นแต่เวลา googleจะใช้งาน ต้องเป็น point lat กะ long อย่างนี้ต้องทำยังไงคร๊ะ

    ขอบคุณคร๊ะ
    ^^
  • tanomsak
    ข้อแรกหมายถึง มีหมุด 4 แบบ แต่เปลี่ยนรูปได้แบบเดียวเหรอครับ ถ้าใช้ ต้องสร้าง GIcon สำหรับรูปแต่ละรูปครับ

    ส่วนข้อสอง Google รับเป็น From .. To .. ได้นะครับ แต่ว่าได้เฉพาะสถานที่ ที่ Google รู้จักซึ่งในเมืองไทยยังไม่ละเอียดเท่าไหร่ คงต้องระบุจุดใน database ก่อนแล้วให้ผู้ใช้งานเลือกเอาจะสะดวกกว่าครับ

    ปล. รบกวนเขียนภาษาไทยแบบดั้งเดิมเถอะครับ ผมแก่แล้ว อ่านไม่ค่อยออกครับ
  • mie
    ตอนนี้ เชื่อมต่อ ดาต้าเบสได้แร้วอ่ะคร๊ะ ต้องขอบคุณพี่มากเรยนะคร๊ะ

    แต่กะมีปันหาอีกนิสอ่ะคร๊ะ ^^"

    ปันหาแรก มี่ เปลี่ยนหมุด เป็นรูปภาพ ได้แร้ว แต่ได้แค่รูปเดียว จาก 4 รูปอ่ะคร๊ะ ไม่ทราบว่าเป็นเพราะรูปรึเป่า แต่กะนามสกุลเขียนกันหมดทุกรูปนะคร๊ะ ข้อมูลที่เรียกมาจากดาต้าเบสกะถูก โค้ดกะไม่เออเรอนะคร๊ะ

    ปันหาที่สอง คือมี่จะให้ คนที่เข้ามาใช้เว็บ สามารถ หาเส้นทางจาก สถานที่ ที่เขาพิมพ์เข้าไป From. . . To . . . แร้วแสดงเส้นแต่เวลา googleจะใช้งาน ต้องเป็น point lat กะ long อย่างนี้ต้องทำยังไงคร๊ะ

    ขอบคุณคร๊ะ
    ^^
  • tanomsak
    ผมไม่ทราบลายละเอียดเหมือนกันครับ ผมลองหาดูเหมือนจะมีคนเคยถามและตอบไว้ที่ link นี้ครับ

    http://answers.google.com/answers/threadview/id/435679.html

    แต่ว่าวิธีิการจริงๆของ Google เราคงไม่ทรา่บครับ แต่ใน Link อธิบาย algorithm ทั่วไปของการหา shortest path ของ 2 จุดครับ
  • euromous
    ไม่ทราบว่าถ้าผมต้องการให้ google map มันคำนวณเส้นทางที่เราจะไปซึ่งมีทั้งหมดหลายจุดจะสามารถทำได้ไหมครับ
    ถ้าสมมติว่าผมมี lat/lons และจุดเริ่มต้นอยู่แล้ว แต่ผมต้องการจะให้ google map คำนวณเส้นทางที่ใกล้ที่สุดให้ในกรณีที่ผมต้องการเดินทางไปทั้งตามจุดต่างๆ โดยคำนวณจากจุดเริ่มต้นซึึ่งข้อมูลของ lat/lons นี้ผมจะดึงมาจาก Database แล้วส่งไปเป็น parameter เวลา direction.load โดยไม่ได้เรียงลำดับ เช่น ผมต้องการเดินทางจากจุด A ไปทั้งหมดอีก 5 จุด แล้วผม get lat/lons จาก db แล้วส่งไปโดยไม่ได้เรียงลำดับว่าจะต้องไปที่ไหนก่อนเนื่องจากผมไม่ทราบทางว่า lat/lons ไหนจะอยู่ไกลหรือใกล้กว่ากัน แต่ผมมีต้นทางให้เพียงอย่างเดียว ถ้าเป็นกรณีนี้ google map สามารถจัดการให้เราได้ไหมครับ
    ขอบคุณครับ

    ปล. เวปนี้มีประโยชน์มากเลยครับ ^^
  • tanomsak
    Google Maps API ไม่ได้หา shortest path ในการผ่านจุดทั้งหมดให้ (Travelling Salesman problem) แต่จะหาเส้นทางตามลำดับจากแต่ละจุดที่เราใส่ไปครับ
  • euromous
    แล้วแบบนี้พอจะมีวิธีหา shortest path จาก google map ไหมครับ
    เพราะถ้าดูจากค่า lat/lons แล้วเนี่ยไม่สามารถบอกได้ว่าจุดไหนจะใกล้หรือไกลกว่ากันน่ะครับ
    ขอบคุณครับ ^^"
  • tanomsak
    Service จาก Google ไม่มีครับ ต้องคำนวณเอง มีคนทำตัวอย่าง อธิบายไว้ลองอ่้านดูนะครับ ผมไม่เคยไล่เหมือนกันว่าคำนวณยังไง และใช้งานแบบไหนครับ

    http://www.gebweb.net/optimap/
    http://gebweb.net/blogpost/2007/07/05/behind-the-scenes-of-optimap/

  • euromous
    เดี๋ยวลองอ่านดูครับ ขอบคุณมากครับ
  • euromous
    ูู^^
  • hunt
    ถ้าต้องการเพิ่มจุดหมายมากกว่า 2 จุดล่ะครับ จะต้องแก้ไขโค้ดอย่างไร

    ขอบคุณครับ
  • tanomsak
    แค่เพิ่มจุดที่สาม เข้าไปแบบนี้ครับ

    directions.load("from: 14.068, 100.6009 to: 13.8152, 100.5606 to: 13.8222, 100.54",{locale: 'th'});

    แต่ Google จะ return เส้นทางกลับมาเป็นเส้นทางเดียวกัน แบบว่า จาก จุด 1 ไปจุด 2 จากจุด 2 ไปจุด 3 เลยครับ

    ลองดูตัวอย่าง http://tanomsak.com/tutorial-7_1.html ครับ
  • iampz
    รู้สึกว่าในส่วน source code จะเปลี่ยนเป็น entites สองรอบนะครับ เดี๋ยวจะงง ( < -> &lt; )
  • tanomsak
    จริงด้วยครับ ผมแก้ไขแล้วครับ ตอน update รอบสุดท้าย ไม่ทันสังเกตุ

    ขอบคุณ @iampz ครับทีช่วยดู :)
blog comments powered by Disqus