Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.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
如何通过javascript使谷歌地图地理编码器超时?_Javascript_Api_Google Maps_Delay - Fatal编程技术网

如何通过javascript使谷歌地图地理编码器超时?

如何通过javascript使谷歌地图地理编码器超时?,javascript,api,google-maps,delay,Javascript,Api,Google Maps,Delay,我对javascript非常陌生,我在超时geocoder请求方面遇到了问题。 但我被卡住了,我试图在循环中添加延迟,但似乎它们不起作用。 如果你能帮忙,我将不胜感激 <script type="text/javascript"> function setLocationOnMap(locs) { var myOptions = { zoom: 4, center

我对javascript非常陌生,我在超时geocoder请求方面遇到了问题。 但我被卡住了,我试图在循环中添加延迟,但似乎它们不起作用。 如果你能帮忙,我将不胜感激

        <script type="text/javascript">

        function setLocationOnMap(locs) {
            var myOptions = {
                zoom: 4,
                center: new google.maps.LatLng(locs.lat(), locs.lng()),
                mapTypeId: google.maps.MapTypeId.ROADMAP          
            };
            var map = new google.maps.Map(document.getElementById('map_canvas'), myOptions); 

            var i=0;
            var total='<?php echo $counter ?>';

            for (i=0; i<total;i++){//adding cities to map by
                var city= document.the_form.elements[i].value;

                getLatLong2(city, map, setPointer);
            }                
        }

        function setPointer(map, address, locs2){
            var position = new google.maps.LatLng(locs2.lat(), locs2.lng());
            var marker = new google.maps.Marker({
                position: position,
                map: map
            });
            marker.setTitle(address);
        }


        function initialize() {
            var address = "Chicago IL";
            getLatLong(address, setLocationOnMap);
        }

        function getLatLong2(address, map, callback){
            var geo = new google.maps.Geocoder;
            geo.geocode({'address':address},function(results, status){
                if (status == google.maps.GeocoderStatus.OK) {
                    locs2 = results[0].geometry.location; 

                    callback(map, address, locs2);
                } else {
                    //alert("Geocode was not successful for the following reason: " + status);
                }
            });
        }



        function getLatLong(address, callback){
            var geo = new google.maps.Geocoder;
            geo.geocode({'address':address},function(results, status){
                if (status == google.maps.GeocoderStatus.OK) {
                    // processing...
                    locs = results[0].geometry.location; 
                    //pausecomp(10000);

                    callback(locs);
                } else {
                    //alert("Geocode was not successful for the following reason: " + status);
                }
            });
        }
    </script>

函数setLocationMap(locs){
变量myOptions={
缩放:4,
中心:新的google.maps.LatLng(locs.lat(),locs.lng()),
mapTypeId:google.maps.mapTypeId.ROADMAP
};
var map=new google.maps.map(document.getElementById('map_canvas'),myOptions);
var i=0;
var总计=“”;

对于(i=0;i当您提交地理编码请求时,您可以并行启动计时器,当计时器启动时,您可以声明请求已超时。请求仍将继续,但一旦超时,您可以忽略结果:

function getLatLong(address, callback){
    var timerId;
    var timedOut = false;

    var geo = new google.maps.Geocoder;
    geo.geocode({'address':address},function(results, status){
        if (timedOut) {
            // this request timed out, so ignore results
            return;
        } else {
            // this request succeeded, so cancel timer
            clearTimeout(timerId);
        }

        if (status == google.maps.GeocoderStatus.OK) {
            locs = results[0].geometry.location; 
            callback(locs);
        } else {
            //alert("Geocode was not successful for the following reason: " + status);
        }
    });

    timerId = setTimeout(function() {
        timedOut = true;
        alert('Request timed out.');
        // do something else
    }, 10000);
}