2014/03/18

Google Maps API 分析導航功能Sample Code

最近幫忙滅火會用到導航功能,順便寫一下筆記XD

要實現這個功能必須使用Directions Service類別的route方法



route能帶入DirectionsRequest以及一個function
DirectionsRequest這個物件裡面有這些屬性


最基本的設定起點與目的地以及導航模式
  • origin:起點,可以是城市名稱或經緯度
  • destination:目的地,可以是城市名稱或經緯度
  • travelMode:導航模式,如下圖




將設定好資料透過該function回傳Google Drive Service



正確的話會得到JSON資料,將資料透過DirectionsRenderer的setDirections方法來繪製到地圖上



程式碼:
<!DOCTYPE html>
<html>
<head>
 <meta charset="utf8">
 <title>Test</title>
 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
 <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
 <script type="text/javascript">
  $(function () {
   var directionsDisplay = new google.maps.DirectionsRenderer();
   var directionsService = new google.maps.DirectionsService();
   var mapOptions = {
       zoom: 15,
       center: new google.maps.LatLng(22.63961980, 120.30211060)
     };

     var map = new google.maps.Map(document.getElementById('map'), mapOptions);
     directionsDisplay.setMap(map);

     var request = {
       origin: new google.maps.LatLng(22.631386, 120.301951),
       destination: new google.maps.LatLng(22.63961980, 120.30211060),
       travelMode: google.maps.TravelMode.WALKING
     };

     directionsService.route(request, function(response, status) {
      console.debug(response);
       if (status == google.maps.DirectionsStatus.OK) {
          directionsDisplay.setDirections(response);
       }
     });
  });
 </script>
    <style type="text/css">
          html { height: 100% }
          body { height: 100%; margin: 0; padding: 0 }
          #map { height: 95% ; width: 100% }
      </style>
</head>
<body>
 <div id="map"></div>
</body>
</html>

執行結果:




本篇文章程式碼參考於『Directions Service

參考資料:
https://developers.google.com/maps/documentation/javascript/directions
https://developers.google.com/maps/documentation/javascript/reference#DirectionsService
https://developers.google.com/maps/documentation/javascript/reference#DirectionsRequest
https://developers.google.com/maps/documentation/javascript/reference#TravelMode
https://developers.google.com/maps/documentation/javascript/reference#DirectionsRenderer