2014-03-13 134 views
0

即時通訊使用的通信層可用與Mapquest服務,這裏的功能是即時通訊使用:如何在不刷新頁面的情況下重新加載mapquest地圖?

function displayTrafficMap(lati,long,trafficdiv) { 

    var options={ 

      elt:document.getElementById(trafficdiv), 
      zoom:10, 
      latLng:{lat: lati,lng: long}, 
      mtype:'map', 
      bestFitMargin:0, 
      zoomOnDoubleClick:true 

    }; 

    window.map = new MQA.TileMap(options); 

    MQA.withModule('zoomcontrol3','viewcontrol3','traffictogglecontrol', 'shapes', function() { 

     var ttc = new MQA.TrafficToggleControl(); 
     var vwc = new MQA.ViewControl3(); 
     var zc = new MQA.LargeZoomControl3(); 

     window.map.addControl(zc , new MQA.MapCornerPlacement(MQA.MapCorner.TOP_RIGHT, new MQA.Size(5,40))); 
     window.map.addControl(vwc , new MQA.MapCornerPlacement(MQA.MapCorner.TOP_RIGHT)); 
     window.map.addControl(ttc , new MQA.MapCornerPlacement(MQA.MapCorner.TOP_RIGHT)); 

     ttc.toggle(); 

    }); 

} 

頁面加載時我打開這個功能,像這樣:

<script>window.onload = function() { displayTrafficMap(latitude,longitude,'trafficmap'); }</script> 

這工作得很好,但如何在不刷新頁面的情況下以新的經度和緯度再次調用此函數?我試過這個:

<a href="#" onclick="displayTrafficMap(newlat,newlon,'trafficmap');return false;"> 

但沒有任何反應。有什麼建議麼?

回答

0

看來我的答案是缺乏的,希望這將提供更多關於該問題解決方案的信息。爲了確認這個問題,我使用mapquest來顯示其上有交通狀況的地圖。如何更新地圖經緯度而不必刷新頁面?下面是整個腳本我使用,包括使用jQuery,希望這給更多的答案有人可能會尋找:

var traffic_map; 

function displayTrafficMap(lati,long) { 

    var options={ 

      elt:document.getElementById('trafficmap'), 
      zoom:10, 
      latLng:{lat: lati,lng: long}, 
      mtype:'map', 
      bestFitMargin:0, 
      zoomOnDoubleClick:true 

    }; 

    traffic_map = new MQA.TileMap(options); 

    MQA.withModule('zoomcontrol3','viewcontrol3','traffictogglecontrol', 'shapes', function() { 

     var ttc = new MQA.TrafficToggleControl(); 
     var vwc = new MQA.ViewControl3(); 
     var zc = new MQA.LargeZoomControl3(); 

     traffic_map.addControl(zc , new MQA.MapCornerPlacement(MQA.MapCorner.TOP_RIGHT, new MQA.Size(5,40))); 
     traffic_map.addControl(vwc , new MQA.MapCornerPlacement(MQA.MapCorner.TOP_RIGHT)); 
     traffic_map.addControl(ttc , new MQA.MapCornerPlacement(MQA.MapCorner.TOP_RIGHT)); 

     ttc.toggle(); 

    }); 

} 

function changeTrafficMap(lati,long) 
{ 

    traffic_map.setCenter({lat: lati,lng: long}); 

} 

//We run the display map function right away to load the map 
displayTrafficMap(trafficlat,trafficlon); 

$(document).ready(function() { 

    $('#traffic_areas').bind('change', function(ev) { 

     //We get the id for the area that was selected 
     var areaid = $(this).val(); 

     $.ajax({ 

      url:"/traffic.php?aid=" + areaid, 
      type:"GET", 
      dataType:"json", 
      success: function(data) { 

       //First we change the current map view location 
       changeTrafficMap(data.lat,data.lon); 

      } 

     }); 

    }); 

}); 

AJAX調用是調用稱爲traffic.php一個PHP腳本,該腳本連接到我數據庫來抓取分配給正在通過下拉選擇傳遞的areaid的緯度/經度。

+0

請使用您問題上的編輯鏈接添加其他信息。後回答按鈕應該只用於問題的完整答案。 – jzworkman

+0

@jzworkman - 我不同意。當然,完全描述這個解決方案還有改進的空間。但如果這是解決問題的辦法,它應該是一個答案,而不是編入問題的答案。據我所知,[部分答案可以接受](http://meta.stackexchange.com/questions/144452/is-it-okay-to-put-partial-answers),雖然顯然不理想。 – femtoRgon

+0

我想我只是想自己的答案(與問題相同的海報),你可以關閉該問題(因爲它是非常具體的,不太可能幫助另一個案例),或給出更多的細節,可能有用的答案未來。事實上,它並沒有爲未來的用戶提供很多用途。 – jzworkman

相關問題