2016-03-21 124 views
0

即時通訊嘗試獲取狀態代碼使用反向地理位置和谷歌API,但沒有獲得第一次點擊字符串輸出。在第二次點擊時,顯示結果已經存在。如何在第一次點擊按鈕時顯示它?一直卡在這一點上。需要點擊按鈕兩次的JavaScript函數提供輸出

的Javascript:通過ASP創建

var distance=""; 
function RetrieveState() { 
    geocoder2 = new google.maps.Geocoder(); 
    var latlng = new google.maps.LatLng(-41.495839, 147.172006); 

    distance += " State is: " 

    if (geocoder2) {geocoder2.geocode({ 'latLng': latlng }, function (results,  status) 
    { 
     if (status == google.maps.GeocoderStatus.OK) 
     { 
      var result = results[0]; 
      for (var i = 0, len = result.address_components.length; i < len; i++) { 
       var ac = result.address_components[i]; 
       if (ac.types.indexOf("administrative_area_level_1") >= 0) 
        distance += ac.short_name; 
      } 
     }  
    } 
} 

document.getElementById("distance_road").innerHTML = distance; 
} // end RetrieveState 

按鈕:

<asp:Button ID="Button2" runat="server" Text="Button 2" OnClientClick="RetrieveState()" /> 

輸出: 第1點擊:國家是: 第2點擊:國家是:TAS狀態: 3rd點擊:狀態是:TAS狀態是:TAS狀態是:

回答

0

這似乎是因爲您沒有在geocode回調函數中設置innerHTML - 這意味着您要在之前設置innerHTML ,因此返回地理編碼結果。移動行:

document.getElementById("distance_road").innerHTML = distance; 

以下if語句的末尾:

if (status == google.maps.GeocoderStatus.OK) 
0

因爲在第一次距離變量設置,並且由於它是全球性的,當代碼執行它displaing第二時間,嘗試下面的代碼。

var distance=""; 
    function RetrieveState() { 
     geocoder2 = new google.maps.Geocoder(); 
     var latlng = new google.maps.LatLng(-41.495839, 147.172006); 

     distance += " State is: " 

     if (geocoder2) {geocoder2.geocode({ 'latLng': latlng }, function (results,  status) 
     { 
      if (status == google.maps.GeocoderStatus.OK) 
      { 
       var result = results[0]; 
       for (var i = 0, len = result.address_components.length; i < len; i++) { 
        var ac = result.address_components[i]; 
        if (ac.types.indexOf("administrative_area_level_1") >= 0) 
         distance += ac.short_name; 
       } 
       document.getElementById("distance_road").innerHTML = distance; 
      // end RetrieveState 
      }  
     } 
    } 
    }