Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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_Asp.net Ajax - Fatal编程技术网

Javascript函数可用于回发,但不能用于页面加载

Javascript函数可用于回发,但不能用于页面加载,javascript,asp.net-ajax,Javascript,Asp.net Ajax,我正在使用谷歌地图插件,我希望它显示在页面加载以及所有回发中。不过,它似乎只对回发有效。有什么想法吗?我的body onload标记为“body background=“#ccccff”onload=“initialize()”,但函数不是第一次定义的。为什么?代码如下: <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"> </script>

我正在使用谷歌地图插件,我希望它显示在页面加载以及所有回发中。不过,它似乎只对回发有效。有什么想法吗?我的body onload标记为“body background=“#ccccff”onload=“initialize()”,但函数不是第一次定义的。为什么?代码如下:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false">      </script>
<script type="text/javascript">
var mostRecentInfo;
function initialize() {
    var center = new google.maps.LatLng(0, 0);
    var mapOptions = {
        center: center,
        zoom:1,
        mapTypeId: google.maps.MapTypeId.SATELLITE
    };

    var map = new google.maps.Map(document.getElementById("map"), mapOptions);
    var posStr = <%=JSON%>;
    if (posStr.toString() != "0") {
        var test = posStr.toString().split(',');            
        var groundstation = <%=groundStation%>;
        var dateTimeStr = <%=datetimesStr%>;
        var AUStr = <%=auStr%>;
        var spaceCraft = <%=spacecraft%>;
        var dateTimes = dateTimeStr.toString().split(',');
        var auIDs = AUStr.toString().split(',');
        var latitude = new Array((test.length / 2));
        var longitude = new Array(latitude.length);
        var i = 0;
        var markerArray = new Array();
        for (var j = 0; j < (test.length - 1); j = j + 2) {
            latitude[i] = eval(test[j+1]);
            longitude[i] = eval(test[j]);
            var position = new google.maps.LatLng(latitude[i], longitude[i]);
            var marker = new google.maps.Marker({
                map:map,
                position:position
            });
            markerArray.push(marker);
            i++;
        }
        var sumLat = 0;
        var sumLong = 0;            
        for (i = 0; i < latitude.length; i++) {
            sumLat += latitude[i];
            sumLong += longitude[i];
        }
        var avgLat = sumLat / latitude.length;
        var avgLong = sumLong / longitude.length;
        center = new google.maps.LatLng(avgLat, avgLong);
        map.panTo(center); 
        var circle; 
        var contentStr = new Array();                       
        for (i = 0; i < markerArray.length; i++) {
            position = markerArray[i].getPosition();
            var circOptions = {
                strokeColor:"#770000",
                strokeOpacity:0.1,
                fillColor:"#881111",
                fillOpacity:0.4,
                map:map,
                center:position,
                radius:2500000
            };
            circle = new google.maps.Circle(circOptions);
            marker = markerArray[i];
            contentStr[i] = '<div id="content">' +
                '<b>Spacecraft: </b>' + spaceCraft.toString() + '<br />' +
                '<b>Start Time (UTC): </b>' + dateTimes[i].toString() + '<br />' +                  
                '<b>Position: </b>(' + latitude[i].toString() + ', ' + longitude[i].toString() + ')<br />' +
                '<b>AU ID: </b>' + auIDs[i] + '<br />' +
                '<b>Downlink Station: </b>' + groundstation.toString() + '<br />' +
                '</div>';
            addListener(map, marker, contentStr[i]);
        }
    }         
}

function addListener(map, marker, content) {
    var infowindow = new google.maps.InfoWindow({
        content:content
        });               
    google.maps.event.addListener(marker, 'mouseover', function() {
        if (mostRecentInfo) 
            mostRecentInfo.close();
        mostRecentInfo = infowindow;
        infowindow.open(map, this);
    });
}

变种mostRecentInfo;
函数初始化(){
var center=newgoogle.maps.LatLng(0,0);
变量映射选项={
中心:中心,,
缩放:1,
mapTypeId:google.maps.mapTypeId.SATELLITE
};
var map=new google.maps.map(document.getElementById(“map”)、mapOptions);
var posStr=;
if(posStr.toString()!=“0”){
var test=posStr.toString().split(',');
var地面站=;
var dateTimeStr=;
澳大利亚风险值=;
var=;
var dateTimes=dateTimeStr.toString().split(',');
var auIDs=aust.toString().split(',');
变量纬度=新数组((test.length/2));
var经度=新数组(纬度.长度);
var i=0;
var markerArray=新数组();
对于(变量j=0;j<(测试长度-1);j=j+2){
纬度[i]=eval(测试[j+1]);
经度[i]=eval(测试[j]);
var position=new google.maps.LatLng(纬度[i],经度[i]);
var marker=new google.maps.marker({
地图:地图,
职位:职位
});
markerArray.push(标记器);
i++;
}
var sumLat=0;
var sumLong=0;
对于(i=0;i”+
'开始时间(UTC):'+dateTimes[i].toString()+'
'+ '位置:('+纬度[i].toString()+','+经度[i].toString()+')
'+ 'AU ID:'+auid[i]+'
'+ '下行站:'+groundstation.toString()+'
'+ ''; addListener(map、marker、contentStr[i]); } } } 函数addListener(映射、标记、内容){ var infowindow=new google.maps.infowindow({ 内容:内容 }); google.maps.event.addListener(标记'mouseover',函数(){ 如果(MOSTRECNTINFO) mostRecentInfo.close(); mostRecentInfo=信息窗口; 打开(地图,这个); }); }


等等。

在初始化函数准备就绪之前调用
onload
函数可能会出现计时问题。这就是像jQuery这样的库具有document.ready函数的原因。您可以尝试删除
onload
并在关闭
body
标记之前调用HTML底部的
initialize()
。这可能对你有用


如果你有选择的话,我会使用一个库,这样你就可以确保函数在那里并且你的页面已经准备好了。如果您还没有尝试过,请试一试。

尝试使用调试器单步执行代码。转到youtube.com并搜索“使用chrome调试javascript”。现在,您可以逐行检查代码并查看失败的地方。