2012-09-02 14 views
2

我有兩個緯度/長表,每行1000行。我想使用Google Map API計算兩個緯度/經度之間的距離,並使用DB存儲距離。 代碼工作正常,但捕獲的是如何從JavaScript返回計算的距離。我試圖隱藏字段存儲的距離,因爲我已經寫在頁面加載下面的代碼,但它不工作:如何獲得C#中的Javascript變量值#

 SqlConnection sql_con = new SqlConnection("Database=myDB;Server=mySever;User Id=myID;password=PWD"); 
     SqlCommand sql_cmd = new SqlCommand("select Zip,Latitude,Longitude from ZipCodes", sql_con); 
     SqlDataAdapter sql_adt = new SqlDataAdapter(sql_cmd); 
     DataSet dsZip = new DataSet(); 
     sql_adt.Fill(dsZip); 

     sql_cmd = new SqlCommand("select * from MyPlaceLatLong", sql_con); 
     sql_adt = new SqlDataAdapter(sql_cmd); 
     DataSet dsStore = new DataSet(); 
     sql_adt.Fill(dsStore); 

     for (int zcnt = 0; zcnt < dsZip.Tables[0].Rows.Count; zcnt++) 
     { 
      for (int i = 0; i < dsStore.Tables[0].Rows.Count; i++) 
      { 
       Page.ClientScript.RegisterClientScriptBlock(GetType(), "myScssript", "<script>" + 
       "var origin1 = new google.maps.LatLng("+dsZip.Tables[0].Rows[zcnt]["Latitude"].ToString()+","+ dsZip.Tables[0].Rows[zcnt]["Longitude"].ToString()+");" + 
       "var origin2 = new google.maps.LatLng(" + dsStore.Tables[0].Rows[i]["lat"].ToString() + "," + dsStore.Tables[0].Rows[i]["long"].ToString() + ");" + 
        //"var origin1 = new google.maps.LatLng(55.930385, -3.118425);" + 
        //"var origin2 = new google.maps.LatLng(51.483061, -0.004151);" + 
       "var service = new google.maps.DistanceMatrixService();" + 
       " alert('Made it to calculateDistances');" + 
       "service.getDistanceMatrix(" + 
       "{" + 
        "origins: [origin1]," + 
        "destinations: [origin2]," + 
        "travelMode: google.maps.TravelMode.DRIVING," + 
        "unitSystem: google.maps.UnitSystem.IMPERIAL," + 
        "avoidHighways: false," + 
        "avoidTolls: false" + 
       "}, callback);" + 
       "function callback(response, status)" + 
        "{" + 
        "if (status == google.maps.DistanceMatrixStatus.OK) { " + 
        "var origins = response.originAddresses; " + 
        "var destinations = response.destinationAddresses;" + 
        "for (var i = 0; i < origins.length; i++) {" + 
        "var results = response.rows[i].elements;" + 
        "for (var j = 0; j < results.length; j++) {" + 
        "var element = results[j];" + 
        "var distance = element.distance.text;" + 
        "var duration = element.duration.text; " + 
        "var from = origins[i];" + 
        "var to = destinations[j];" + 
        "alert('The distance:'+ distance);" + 
        "}}}}" + 
       "</script>"); 



      } 
     } 

回答

5

您需要設置隱藏字段的值在JavaScript,我不相信我看到那裏。聲明場在你的ASP這樣的:

<input type="hidden" id="txtDistance" runat="server" /> 

在JavaScript中添加此對你的終結「回調函數(響應狀態)」:

document.getElementById("txtDistance").value = distance; 

,然後在C#代碼,你可以像這樣訪問這個值:

string cDistance = txtDistance.value; 

希望有幫助。

+0

當我做最後一行時,得到'txtDistance.value',我在WinForm應用程序中遇到錯誤:「對象引用未設置爲對象的實例。」 – Dagrooms