Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maps 谷歌地图需要显示地址列表-设置输出速度慢和超过查询限制问题_Maps - Fatal编程技术网

Maps 谷歌地图需要显示地址列表-设置输出速度慢和超过查询限制问题

Maps 谷歌地图需要显示地址列表-设置输出速度慢和超过查询限制问题,maps,Maps,大家好,我有大约500个地址要在谷歌地图中列出,每个地址都是从filemaker数据库中抓取的,而不是分组在一个类别person(地图中的员工姓名)下。我正在使用一个函数对其进行地理编码,我每隔10次用10秒的时间调用一次 setimout,问题是: 1-当你必须显示500个地址时,页面非常慢,设置超时时间为10秒(地址可以在任何一秒钟内更改,从不固定地址),有更好的方法吗? 2-即使settimout设置为每10秒调用一次,我仍然会偶尔超过查询限制,为什么会发生这种情况,10秒是很长的时间 代

大家好,我有大约500个地址要在谷歌地图中列出,每个地址都是从filemaker数据库中抓取的,而不是分组在一个类别person(地图中的员工姓名)下。我正在使用一个函数对其进行地理编码,我每隔10次用10秒的时间调用一次 setimout,问题是: 1-当你必须显示500个地址时,页面非常慢,设置超时时间为10秒(地址可以在任何一秒钟内更改,从不固定地址),有更好的方法吗? 2-即使settimout设置为每10秒调用一次,我仍然会偶尔超过查询限制,为什么会发生这种情况,10秒是很长的时间

代码如下:

<pre><script type="text/javascript">
var mapOptions = {
    //center:myLatLng,
    //zoom:15,
    mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map-canvas"),
    mapOptions);
//var contentString='<div id="google_info_window">I;m Here</div>';
//var infowindow = new google.maps.InfoWindow();
var infowindow = new google.maps.InfoWindow(
  { 
    size: new google.maps.Size(150,50)
  });

var addresses = new Array();
var gmarkers = [];
addresses = <?php echo json_encode($project_info); ?>;
console.log("Addresses: <pre>"+JSON.stringify(addresses));
<?php //foreach($project_info as $i => $val){?>
    //addresses.push('<?php //echo $val; ?>');
<?php //}?>

var bounds = new google.maps.LatLngBounds();
i=1;
mySleepFunction();

function mySleepFunction()
{
var geocoder = new google.maps.Geocoder();
//var myLatLng = new google.maps.LatLng(30,-50);

//var contentString='<div id="google_info_window">I;m Here</div>';

//for(var i = 0; i<Object.keys(addresses).length; i++)

var show_message= document.getElementById('map_message');
show_message.style.display="block";
show_message.innerHTML ="<div>Loading Please Wait...</div>";

for (; i < 200; i++) {
    if(i %10 == 0) {
         setTimeout(geocoder.geocode({'address': addresses[i-1]['Address']}, makeCallback(i)),2000);
          i++;
          setTimeout("mySleepFunction()",9000);
          break;
    }
    geocoder.geocode({'address': addresses[i-1]['Address']}, makeCallback(i));
    if (i==199){
        show_message.style.display = 'none';
    }
}//For statement    
function makeCallback(addressIndex) {
    var i = addressIndex-1;
    var geocodeCallBack = function(results, status) {

        if (status != google.maps.GeocoderStatus.OK) {
            console.log("Geocode was not successful for the following reason: " + status);
        } else {
            var p = results[0].geometry.location;
            var address_formated = results[0].formatted_address;
            var appraiser = addresses[i]['Staff'];
            //var latlng = new google.maps.LatLng(p.lat,p.lng);

                map.setCenter(p);
            createMarker(map,address_formated,p,appraiser);
         // sets the center point to be the p
            //map.setZoom(10); // sets the zoom level
            //bounds.extend(latlng);
           // main.setMap(map, point, titles[i], bounds);
            show(appraiser);
        }
    }

    return geocodeCallBack;
}// fUNCTION MAKECALLBAC

}
    //map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
    map.fitBounds(bounds);
    // map.panToBounds(bounds);

function createMarker(map,add,p,appraiser) {

    var str = add;
    var numb=str.indexOf(',');
    //alert("position of:"+numb);

    str =  str.substr(0, numb+1) +"<br/>"+ str.substr(numb+1);
    var contentString = '<div id="google_info_window" style="min-height:40px;height:auto;width:auto;"><strong>'+appraiser+'</strong><p style="margin:1px;padding:5px 1px 2px 1px">'+str+'</p></div>';
        //var infowindow = new google.maps.InfoWindow();


      var marker = new google.maps.Marker({
        map: map,
         title:appraiser,
        position: p
    });
     marker.mycategory = appraiser;                                 
        gmarkers.push(marker);

              //Open the infowindow
    google.maps.event.addListener(marker, 'click', function() {
        infowindow.open(map,marker);
        infowindow.setContent(contentString);
    });
    marker.setMap(map,bounds);
}
 // == shows all markers of a particular category, and ensures the checkbox is checked ==
function show(appraiser) {
    for (var i=0; i<gmarkers.length; i++) {
      if (gmarkers[i].mycategory == appraiser) {
        gmarkers[i].setVisible(true);
      }
    }
    // == check the checkbox ==
    var appraiser_id = appraiser.replace(/\s/g,"");
    var apraiser_checkbox_id = appraiser_id+"_Checkbox";
     document.getElementById(appraiser_id+"_Checkbox").checked = true;
}
// == hides all markers of a particular category, and ensures the checkbox is cleared ==
function hide(appraiser) {
    for (var i=0; i<gmarkers.length; i++) {
      if (gmarkers[i].mycategory == appraiser) {
        gmarkers[i].setVisible(false);
      }
    }
    // == clear the checkbox ==
    var appraiser_id = appraiser.replace(/\s/g,"");
    document.getElementById(appraiser_id+"_Checkbox").checked = false;
    // == close the info window, in case its open on a marker that we just hid
    infowindow.close();
}
 function boxclick(box,appraiser) {
        if (box.checked) {
          show(appraiser);
        } else {
          hide(appraiser);
        }
        // == rebuild the side bar
      }
// google.maps.event.addDomListener(window, 'load', initialize);
</script></pre>

变量映射选项={
//中心:myLatLng,
//缩放:15,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
var map=new google.maps.map(document.getElementById(“地图画布”),
地图选项);
//var contentString='I;我在这里;
//var infowindow=new google.maps.infowindow();
var infowindow=new google.maps.infowindow(
{ 
尺寸:新谷歌地图尺寸(150,50)
});
var addresses=新数组();
var gmarkers=[];
地址=;
log(“地址:+JSON.stringify(地址));
//地址。推送(“”);
var bounds=new google.maps.LatLngBounds();
i=1;
mysleepffunction();
函数mysleepffunction()
{
var geocoder=new google.maps.geocoder();
//var mylatng=new google.maps.LatLng(30,-50);
//var contentString='I;m Here';
//对于(var i=0;i