如何通过javascript使谷歌地图地理编码器超时?
我对javascript非常陌生,我在超时geocoder请求方面遇到了问题。 但我被卡住了,我试图在循环中添加延迟,但似乎它们不起作用。 如果你能帮忙,我将不胜感激如何通过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
<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);
}