2016-04-08 16 views
0

Uygulamam sayım için api çağrıları yapar ve bu verileri Google Maps API v3 ile birlikte kullanır. Zamanın çoğunda beklendiği gibi çalışır, ancak 'Initmap tanımlı değil' veya 'google tanımlı değil' veya 'TypeError: map.data.getFeatureById (...) undefined' aralıklı bir hata alıyorum Herhangi bir mantıksal sebep olmaksızın.
HTML:Aralıklı 'google tanımlı' ve haritalar kullanarak diğer hataları alma api v3

<html> 
    <head> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> 

    <script src="https://maps.googleapis.com/maps/api/js?v=3&key=KEY1234&callback=initMap" async defer 
    ></script> 
     <script src="js/mapfunc.js"></script>   
    </head> 
    <body>  
      <div id="map"></div> 
<script>var map; 
function initMap() { 
    map = new google.maps.Map(document.getElementById('map'), { 
     zoom: 4, 
     center: {lat: 35, lng: -106} 
    }); 
}</script> 

    </body> 

</html> 

JS:

function loadMapShapes() { 
    map.data.loadGeoJson('jsonya2.geojson', { idPropertyName: 'STATE' }); 
    variable = 'B01003_001E,NAME'; 
    variable2 = ',B01001F_002E';  
    loadCensusData(variable); 

} 

function loadCensusData(variable) { 
    // load the requested variable from the census API 
    var xhr = new XMLHttpRequest(); 
    xhr.open('GET', 'http://api.census.gov/data/2014/acs5/?get=' + 
    variable + '&for=state:*&key=KEY123'); 
    xhr.onload = function() { 
     var censusData = JSON.parse(xhr.responseText); 
     censusData.shift(); // the first row contains column names   

     censusData.forEach(function(row) { 
      censusMin = 0; 
     censusMax = 36000000; 
      var censusVariable = parseFloat(row[0]);    
      var stateName = row[1]; 

      var stateId = row[2]; 
      // keep track of min and max values 
      if (censusVariable < censusMin) { 
       censusMin = censusVariable; 
      } 
      if (censusVariable > censusMax) { 
       censusMax = censusVariable; 
      } 
      // update the existing row with the new data    
      coolid = map.data.getFeatureById(stateId);// <-- Here's where 
//I get the error most often: "TypeError: map.data.getFeatureById(...) is undefined" 
      if (coolid !== undefined) { 
        map.data 
     .getFeatureById(stateId) 
     .setProperty('census_variable', censusVariable); 

       map.data 
     .getFeatureById(stateId) 
     .setProperty('census_variable1', stateName); 
      } 
      coolstate = map.data.getFeatureById(stateName); 


     }); 

Yine - Bu kod zamanın belki% 40 çalışır ve yukarıda açıklanan hatalardan biri zaman geri kalanını atar. Gün içinde hatalarda artış olduğunu fark edebilirim ancak emin olamıyorum. ayrıca fonksiyonlarını yürütmek için loadGeoJson arasında geri arama kullanın http://dukecitydigital.com/c1/

+1

'

1

olan 'tanımsız' hatası:

// update the existing row with the new data 
if (typeof(map.data.getFeatureById(stateId)) != "undefined") { 
    map.data 
    .getFeatureById(stateId) 
    .setProperty('census_variable', censusVariable); 
} 
+0

Teşekkürler CBEK - Tüm özellikimi kimliğime sarmak zorunda kaldım ve buna da propertis koydum. – phillydigital