2015-01-12 3 views
0

프로그래밍 모험 중 가장 이상한 오류라고 말해야합니다. 왜 이런 일이 벌어지고 있는지 모르겠습니다.Google지도 API : 마우스 오버는 특정 시간에만 작동합니다.

기본적으로 내 응용 프로그램은 MySQL 데이터베이스에서 일부 데이터를 받아야하며 사용자가 국가를 클릭하면 infowindow에 정보 (DB에서)가 표시되어야합니다. DB 통신이 정상적으로 작동하고 있습니다. 문제는 마우스를 국가로 가져 가면 마우스 오버 이벤트가 호출되지 않는 경우입니다.

가끔은? 무슨 주파수로? 가장 이상한 부분은 다음과 같습니다. 저는 브라질이고, 저는 UTC -3와 함께 일합니다. 18:00에 신청서에 접속하면 작동하지 않습니다. 그러나 오전 7시와 같이 아침에 액세스하면 작동합니다.

난 정말 이런 일이 왜 아무 생각이 온라인 검색 tryed하지 아무것도 ...

누군가가 나를 도울 수

발견 있나요? 이것은 내가 사용하는 코드입니다 (더하는 오류는 JS 콘솔에 표시되지 않습니다, 오류가 크롬에서 일어나는, 파이어 폭스, IE는 ...) :

<script type="text/javascript" > 
     var colors = ['#FF0000', '#00FF00', '#0000FF', '#FFFF00']; 
     var map 
     var infowindow; 

     function initialize() { 
     var myOptions = { 
      zoom: 2, 
      center: new google.maps.LatLng(10, 0), 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 

     map = new google.maps.Map(document.getElementById('map-canvas'), 
      myOptions); 

    geocoder = new google.maps.Geocoder(); 


     // Initialize JSONP request 
     var script = document.createElement('script'); 
     var url = ['https://www.googleapis.com/fusiontables/v1/query?']; 
     url.push('sql='); 
     var query = 'SELECT name, kml_4326 FROM ' + 
      '1foc3xO9DyfSIF6ofvN0kp2bxSfSeKog5FbdWdQ'; 
     var encodedQuery = encodeURIComponent(query); 
     url.push(encodedQuery); 
     url.push('&callback=drawMap'); 
     url.push('&key=AIzaSyAm9yWCV7JPCTHCJut8whOjARd7pwROFDQ'); 
     script.src = url.join(''); 
     var body = document.getElementsByTagName('body')[0]; 
     body.appendChild(script); 
     } 

     function drawMap(data) { 
     var rows = data['rows']; 
     for (var i in rows) { 
      if (rows[i][0] != 'Antarctica') { 
      var newCoordinates = []; 
      var geometries = rows[i][1]['geometries']; 
      if (geometries) { 
       for (var j in geometries) { 
       newCoordinates.push(constructNewCoordinates(geometries[j])); 
       } 
      } else { 
       newCoordinates = constructNewCoordinates(rows[i][1]['geometry']); 
      } 
      //var randomnumber = Math.floor(Math.random() * 4); 
      var country = new google.maps.Polygon({ 
       paths: newCoordinates, 
       //strokeColor: colors[randomnumber], 
       strokeOpacity: 0, 
       strokeWeight: 1, 
       //fillColor: colors[randomnumber], 
       fillOpacity: 0 
      }); 

     infowindow = new google.maps.InfoWindow({ 
      content: '' 
     }); 

      google.maps.event.addListener(country, 'mouseover', function() { 
       alert("HIIIIII JOW"); 
       this.setOptions({fillOpacity: 0.3}); 
      }); 
      google.maps.event.addListener(country, 'mouseout', function() { 
       this.setOptions({fillOpacity: 0}); 
      }); 
      google.maps.event.addListener(country, 'click', function(event) { 
       var lat = event.latLng.lat(); 
       var lng = event.latLng.lng(); 

       initialize2(lat,lng); 

      }); 
      country.setMap(map); 
      } 
     } 
     } 

     function constructNewCoordinates(polygon) { 
     var newCoordinates = []; 
     var coordinates = polygon['coordinates'][0]; 
     for (var i in coordinates) { 
      newCoordinates.push(
       new google.maps.LatLng(coordinates[i][1], coordinates[i][0])); 
     } 
     return newCoordinates; 
     } 


     function initialize2(lat,lng){ 
     var url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=" + lat + "," + lng+ "&sensor=true&language=en"; 
     jQuery.getJSON(url, function (data) { 

     for (var i = 0; i < data.results[0].address_components.length; i++){ 
      //var formatted = results[0].formatted_address;//.short_name 
      var countryName 
      var shortname = data.results[0].address_components[i].short_name; 
      var longname = data.results[0].address_components[i].long_name; 
      var type = data.results[0].address_components[i].types; 
      if (type.indexOf("country") != -1){ 
       if (isNullOrWhitespace(shortname)){ 
        countryName = shortname; 
       } 
       else{ 
        countryName = longname; 
       } 
      } 
     } 
     var lat2; 
     var lng2 
     geocoder.geocode({'address' : countryName}, function(results, status) { 
      if (status == google.maps.GeocoderStatus.OK) { 
       lat2 = results[0].geometry.location.lat(); 
       lng2 = results[0].geometry.location.lng(); 
       //alert(results[0].geometry.location);//map.setCenter(results[0].geometry.location); 
       //alert(lat2+','+lng2); 
       var array = <?php echo json_encode($arr); ?>; 

       var str = 'Nenhuma exchange cadastrada neste país!'; 

       for(var i = 0;i<array.length;i++){ 

        if(countryName==array[i][0]){ 
         var string = 'country_volume.php?country=' + countryName; 
         str = '<center><strong>'+array[i][0]+'</strong></center>' + 
          '<strong>Número de Exchanges: </strong>' + array[i][1] + '</br>' + 
          '<strong>Volume: </strong>' + array[i][2] + '</br>' + 
          '<strong>Ranking Mundial: </strong> ' + array[i][3] + 'º' + '</br>' + 
          '<strong>Porcentagem Mundial (%): </strong> ' + array[i][4] + '%' + '</br>' + 
          '<a href='+string+'>' + 'Mais Informações' + '</a>'; 
        } 

       } 

       if (infowindow) infowindow.close(); 
       infowindow = new google.maps.InfoWindow({ 
        content: str, 
        map: map, 
       position: new google.maps.LatLng(lat2,lng2) 
       }); 

      } 
     }); 

     }); 
     } 

    function isNullOrWhitespace(text) { 
     if (text == null) { 
      return true; 
     } 
     return text.replace(/\s/gi, '').length < 1; 
    } 


     google.maps.event.addDomListener(window, 'load', initialize); 
    </script> 
+1

아마도 "일일 제한 초과"와 같은 FusionTables API v1에서 오류가 발생했을 수 있습니다. – geocodezip

답변

0

당신은 퓨전 테이블 API의 일상 quota을 초과 할 수

기본 요청 할당량 한도는 다음과 같습니다.

API 프로젝트 당 하루 25,000 건의 요청입니다. 여기서 읽기는 하나의 요청으로 계산되고 5 회의 요청으로 계산됩니다.

30 테이블 당 분당 쓰기 요청 "할당량"탭 아래 Google APIs Console에서 더 많은 할당량을 요청할 수 있습니다.

스토리지 할당량 제한은 다음과 같습니다 : 모든 테이블

자세한 내용은 here를 참조하십시오 사이에 전체 테이블 당

  • 1백메가바이트
  • 250메가바이트

+0

고마움 많은 남자, 참으로 나는 예제의 편집자로부터 나온 열쇠를 사용하고 있었고, 내 자신의 롤이 아니었다. – Ernanirst

+0

다행스럽게도 기쁘다! – bjiang

관련 문제