2017-03-07 100 views
0

我做了一個代碼來獲取郵政編碼的地址。我寫了這樣的代碼下面Uncaught TypeError:無法讀取未定義的屬性'GetLatdlngd'

constructor(props) { 
    super(props); 
    this.handleInput=this.handleInput.bind(this); 
    this.GetpostalAddress=this.GetpostalAddress.bind(this); 
    this.GetLatdlngd=this.GetLatdlngd.bind(this); 
} 

componentWillMount() { 
    const script = document.createElement("script"); 

    script.src = "http://maps.googleapis.com/maps/api/js?key=AIzaSyAl_I8Rp3zLc4ZN8gBLRTmOjwacWAHSk4Y"; 
    script.async = true; 

    document.body.appendChild(script);  
} 

handleInput(e) 
{ 
    var PostalCode=e.target.value; 
    var latitude=0; 
    var longitude=0; 
    var Placeid=''; 
    var latlng =0; 
    if(PostalCode.length==6) 
    { 
     this.GetpostalAddress(PostalCode,function(Address){ 
      alert(Address); 
      this.GetLatdlngd(Address,function(){ 
      }); 

     }); 
    } 
} 

GetpostalAddress(PostalCode,callback) 
{ 
    var HotelName='Hotel ABC'; 
    var City=''; 
    var State=''; 
    var Country=''; 
    var Address=''; 
    var geocoder = new google.maps.Geocoder(); 
    geocoder.geocode({ 'address': PostalCode }, function(results, status) { 
     if (status == 'OK') { 
      //alert(JSON.stringify(results)); 
      City=results[0].address_components[1].long_name; 
      State=results[0].address_components[3].long_name; 
      Country=results[0].address_components[4].long_name; 
      Address=HotelName+','+City+','+State+','+Country; 
      callback(Address); 
     } else { 
      alert('Geocode was not successful for the following reason: ' + status); 
     } 
    }); 
} 

GetLatdlngd(Address,callback) 
{ 
    alert('inlat='+Address); 
    var geocoder = new google.maps.Geocoder(); 
    geocoder.geocode({'address': Address }, function(results, status) { 
     if (status === google.maps.GeocoderStatus.OK) { 
      var lattitude=results[0].geometry.location.lat(); 
      var longitude=results[0].geometry.location.lng(); 
      //alert(JSON.stringify(results));`enter code here` 
      alert(lattitude,longitude); 
      callback(); 
     } 
    }); 
    // 
} 

但在調用第二個函數及其投擲的錯誤 遺漏的類型錯誤:無法讀取屬性「GetLatdlngd」的未定義

任何人能告訴我,爲什麼這個錯誤是occurring`

+0

你有您已定義的構造函數的類? –

+0

更改後當前我的代碼如下所示: – HHasha

+0

請查看編輯的代碼 – HHasha

回答

0

這是因爲GetLatdlngdwindow上定義,但您期望在GetpostalAddress

這應該很好。

變更之後,目前我的代碼看起來象下面這樣:

class PropertyPostalCode extends BaseComponent{ 

    constructor(props) { 
     super(props);  
     this.handleInput=this.handleInput.bind(this); 
     this.GetpostalAddress=this.GetpostalAddress.bind(this); 
     this.GetLatdlngd=this.GetLatdlngd.bind(this); 

    } 

    componentWillMount() { 
     const script = document.createElement("script"); 
     script.src = "http://maps.googleapis.com/maps/api/js?key=AIzaSyAl_I8Rp3zLc4ZN8gBLRTmOjwacWAHSk4Y"; 
     script.async = true; 

     document.body.appendChild(script); 
    } 

    handleInput(e) 
    { 
     var PostalCode=e.target.value; 
     var latitude=0; 
     var longitude=0; 
     var Placeid=''; 
     var latlng =0; 
     if(PostalCode.length==6) 
     { 
      this.GetpostalAddress(PostalCode,function(Address){ 
       alert(Address); 
       GetLatdlngd(Address,function(){ 
       }); 

      }); 

     } 
    } 

    GetpostalAddress(PostalCode,callback) 
    { 
     var HotelName='Hotel ABC'; 
     var City=''; 
     var State=''; 
     var Country=''; 
     var Address=''; 
     var geocoder = new google.maps.Geocoder(); 
     geocoder.geocode({ 'address': PostalCode }, function(results, status) { 
      if (status == 'OK') { 
       //alert(JSON.stringify(results)); 
       City=results[0].address_components[1].long_name; 
       State=results[0].address_components[3].long_name; 
       Country=results[0].address_components[4].long_name; 
       Address=HotelName+','+City+','+State+','+Country; 
       callback(Address); 
      } else { 
       alert('Geocode was not successful for the following reason: ' + status); 
      } 
     }); 

    } 

    GetLatdlngd(Address,callback) 
    { 
     alert('inlat='+Address); 
     var geocoder = new google.maps.Geocoder(); 
     geocoder.geocode({'address': Address }, function(results, status) { 
      if (status === google.maps.GeocoderStatus.OK) { 
       var lattitude=results[0].geometry.location.lat(); 
       var longitude=results[0].geometry.location.lng(); 
       //alert(JSON.stringify(results));`enter code here` 
       alert(lattitude,longitude); 
       callback(); 
      } 
     }); 
     // 
    } 
+0

我沒有得到您更改代碼的位置,以便正常運行。您可以標記需要更改的位置嗎? – HHasha

+0

我試着在代碼中運行你的修改,但仍然發現它的拋出錯誤'Uncaught ReferenceError:GetLatdlngd is not defined'。 – HHasha

相關問題