2012-05-22 36 views
0

這是prob。非常簡單,但我無法得到它。我有一個href鏈接,例如<a href="includes/driving.php?lat=38.254181&long=20.649962" class="driving" >Driving instructions</a>點擊它(使用jQuery)時打開這樣的GoogleMap的:Google Maps JavaScript API v3向地圖發送動態變量

jQuery('a.driving').live('click',function(){ 
jQuery('#content').empty().load(jQuery(this).attr('href'), function(){ 
initGeolocation(); 
}) 
return false; 
}); 

功能initGeolocation();抓住HTML5的位置和有在頁面上超過1個class="driving"鏈接。我無法實現的是將經緯度和長變量傳遞給地圖。我需要讓他們進入這個功能:

function calcRoute(position) { 
var start = '38.313393,20.562651'; 
var end = 'lat' , 'long' 
var request = { 
    origin:start, 
    destination:end, 
    travelMode: google.maps.DirectionsTravelMode.DRIVING 
}; 
directionsService.route(request, function(response, status) { 
    if (status == google.maps.DirectionsStatus.OK) { 
    directionsDisplay.setDirections(response); 
    } 
}); 

}

如果需要的地圖被稱爲像這樣(標準碼)

function success(position) { 
    var myOptions = { 
     zoom: 13, 
     center: new google.maps.LatLng(38.313393, 20.562651), 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    } 
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
    directionsDisplay = new google.maps.DirectionsRenderer({ 
     'map': map, 
     'preserveViewport': true, 
     'draggable': true 
    }); 
    directionsDisplay.setPanel(document.getElementById("directions_panel")); 
    google.maps.event.addListener(directionsDisplay, 'directions_changed', 
     function() { 
     if (currentDirections) { 
      oldDirections.push(currentDirections); 
      setUndoDisabled(false); 
     } 
     currentDirections = directionsDisplay.getDirections(); 
     }); 
    setUndoDisabled(true); 
    calcRoute(position); 
    } 

幫助表示讚賞感謝

回答

0

大家好!如果你準備好了你的座標系,那你爲什麼不用這種方法創建google.maps.LatLng對象:new google.maps.LatLng(your lat, your lon),如果你想指定string那麼這樣做new google.maps.LatLng("address")並分配這個latlng對象來開始和結束。這將解決您的問題。欲瞭解更多詳情,請訪問 谷歌的文檔:)

+0

問題是我找不到它在谷歌文檔 –

+0

PLZ訪問這裏https://developers.google.com/maps/documentation/javascript/directions#DirectionsRequests – Neji

+0

嗨Nejil謝謝你,只是我不想要使用選擇框,假設我可以將變量添加到隱藏的輸入並按ID呼叫,但寧願使用get –

0

你可以得到的PHP變量,通過lat和長時間的JavaScript增值經銷商,然後在你的calcRoute功能同時使用瓦爾:

var lat = "<?= $lat ?>"; 
var long = "<?= $long ?>"; 

function calcRoute(lat, long) { 
    var start = '38.313393,20.562651'; 
    var end = lat , long; 
    var request = { 
     origin:start, 
     destination:end, 
     travelMode: google.maps.DirectionsTravelMode.DRIVING 
    }; 
    directionsService.route(request, function(response, status) { 
     if (status == google.maps.DirectionsStatus.OK) { 
      directionsDisplay.setDirections(response); 
     } 
}); 

而且你可以調用:

calcRoute(lat, long); 
0

哦,我明白了。您想從鏈接獲取lat和long屬性並將它們傳遞給calcRoute函數。好吧,這樣做[ELEM是當前<A href...>元素,名稱是「緯度」或「長」:

function getParameterByName(name) { 
  name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); 
  var regexS = "[\\?&]" + name + "=([^&#]*)"; 
  var regex = new RegExp(regexS); 
  var results = regex.exec(window.location.search); 
  if(results == null) 
    return ""; 
  else 
    return decodeURIComponent(results[1].replace(/\+/g, " ")); 
} 

var lat=getParameterByName(elem, "lat"); 
var long=getParameterByName(elem, "long"); 

功能從How can I get query string values in JavaScript?撕開。