2012-08-17 65 views
2

我正在嘗試編寫一個腳本,該腳本將獲取用戶的地理位置 - 如果他們啓用了該功能,並將路線繪製到預定義目的地。如果他們沒有啓用地理定位,則應該繪製預定義的位置。該腳本不起作用,但您應該能夠通過查看代碼來了解我正在嘗試做什麼。我在正確的軌道上嗎?任何人都可以發現它爲什麼不起作用嗎?谷歌地圖/ gmap3 - 繪製從用戶的地理位置到已知目的地的路線 - 需要幫助

<script type="text/javascript"> 
     $(function(){ 

     var dest = "Unit 20, Tallaght Business Centre, Whitestown Road, Tallaght Business Park, Ireland"; 

     if(geolocEnabled()){ 
      getLocation(); 
     }else{ 
      plotMarker(dest); 
     } 

     //check if geolocation enabled 
     function geolocEnabled(){ 
      return navigator.geolocation; 
     } 

     //plot marker for VRF office 
     function plotMarker(dest){ 
      $('#map').gmap3(
       { action: 'addMarker', 
       address: dest, 
       map:{ 
        center: true, 
        zoom: 14 
       }, 
       marker:{ 
        options:{ 
        draggable: false 
        } 
       } 
       } 
      ); 
     } 

     //get user's location 
     function getLocation(){ 
      $('#map').gmap3(
      { action : 'geoLatLng', 
       callback : function(latLng){ 
       if (latLng){ 
        plotRoute(latLng, dest); 
        return; 
       } else { 
        alert("Unable to determine your location. Enable geolocation services and try again, or consult the map for our location."); 
        plotMarker(dest); 
       } 
       } 
      }); 
      } 

     //plot route 
     function plotRoute(latLng, dest){ 
     $('#map').gmap3(
      { action:'getRoute', 
      options:{ 
       origin: latLng, 
       destination: dest, 
       travelMode: google.maps.DirectionsTravelMode.DRIVING 
      }, 
      callback: function(results){ 
       if (!results) return; 
       $(this).gmap3(
       { action:'init', 
        zoom: 7, 
        mapTypeId: google.maps.MapTypeId.ROADMAP, 
        streetViewControl: true, 
        center: [53.337433,-6.2661] 
       }, 
       { action:'addDirectionsRenderer', 
        panelID: 'directions-panel', 
        options:{ 
        preserveViewport: true, 
        draggable: false, 
        directions:results 
        } 
       } 
      ); 
      } 
      } 
     ); 
     } 

    }); 
    </script> 

都非常感謝。

編輯:我甚至沒有在瀏覽器中獲取地理位置警告,當我運行腳本。

編輯:我從getLocation中刪除了{timeout:10000},它現在進入警報狀態。腳本已更新。

回答

3

地理定位是一個異步過程,當getLocation()完成時,結果將不可用。

呼叫plotRoute()$.gmap3.geoLatLng回調中,並提供預期的參數(的latLng,DEST)

+0

謝謝,這幾乎是現在的工作。我編輯了這個問題並放入了工作版本。有一件事,getLocation()似乎默認爲都柏林的中心,而不是我工作的地方,這與'dest'相同。你有什麼想法爲什麼發生這種情況? – MattSull 2012-08-20 13:43:14

+0

應該讀取我正在處理代碼的位置,這與'dest'相同。 – MattSull 2012-08-20 13:50:05