Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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
映射api3加载xml标记延迟_Xml_Google Maps Api 3_Settimeout - Fatal编程技术网

映射api3加载xml标记延迟

映射api3加载xml标记延迟,xml,google-maps-api-3,settimeout,Xml,Google Maps Api 3,Settimeout,我已经从google maps api中创建了一个应用程序,用于从数据库和php中加载标记,并将生成的xml文件加载到地图中。现在,我正试图添加一个setTimeout延迟,以便像这样一个接一个地删除标记。我是个初学者,如果有人能告诉我怎么做,我会很高兴的 downloadUrl("php/addLocations.php", function (data) { var xml = parseXml(data); var markers = xml.documentElement

我已经从google maps api中创建了一个应用程序,用于从数据库和php中加载标记,并将生成的xml文件加载到地图中。现在,我正试图添加一个setTimeout延迟,以便像这样一个接一个地删除标记。我是个初学者,如果有人能告诉我怎么做,我会很高兴的

downloadUrl("php/addLocations.php", function (data) {
    var xml = parseXml(data);
    var markers = xml.documentElement.getElementsByTagName("marker");
    for (var i = 0; i < markers.length; i++) {
        var name = markers[i].getAttribute("name");
        var address = markers[i].getAttribute("address");
        var type = markers[i].getAttribute("type");
        var profile_image = markers[i].getAttribute("myimage");
        var point = new google.maps.LatLng(
        parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
        var html = "<b>" + name + "</b> <br/>" + address + "<br/>" + "<img src='uploads/" + profile_image + "' width='100px' />";
        var icon = customIcons[type] || {};
        var marker2 = new google.maps.Marker({
            map: bigmap,
            position: point,
            icon: icon.icon,
            animation: google.maps.Animation.DROP,
            shadow: icon.shadow
        });
        bindInfoWindow(marker2, bigmap, infoWindowLoc, html);
    }
});


var infoWindowLoc = new google.maps.InfoWindow;

function bindInfoWindow(marker2, bigmap, infoWindowLoc, html) {
    google.maps.event.addListener(marker2, 'click', function () {
        //openMarkerBox(); 
        // panning map
        bigmap.panTo(marker2.position);
        infoWindowLoc.setContent(html);
        infoWindowLoc.open(bigmap, marker2);
    });
}

function downloadUrl(url, callback) {
    var request = window.ActiveXObject ? new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest;

    request.onreadystatechange = function () {
        if (request.readyState == 4) {
            request.onreadystatechange = doNothing;
            callback(request.responseText, request.status);
        }
    };

    request.open('GET', url, true);
    request.send(null);
}

function parseXml(str) {
    if (window.ActiveXObject) {
        var doc = new ActiveXObject('Microsoft.XMLDOM');
        doc.loadXML(str);
        return doc;
    } else if (window.DOMParser) {
        return (new DOMParser).parseFromString(str, 'text/xml');
    }
}

function doNothing() {
    alert("shit")
}
下载URL(“php/addLocations.php”,函数(数据){ var xml=parseXml(数据); var markers=xml.documentElement.getElementsByTagName(“标记”); 对于(var i=0;i“+地址+”
“+”; var icon=customIcons[type]| |{}; var marker2=新的google.maps.Marker({ 地图:大地图, 位置:点,, icon:icon.icon, 动画:google.maps.animation.DROP, 阴影:icon.shadow }); bindInfoWindow(marker2、bigmap、infoWindowLoc、html); } }); var infoWindowLoc=new google.maps.InfoWindow; 函数bindInfoWindow(marker2、bigmap、infoWindowLoc、html){ google.maps.event.addListener(marker2,'click',函数(){ //openMarkerBox(); //平移图 潘托大地图(marker2.位置); infoWindowLoc.setContent(html); infoWindowLoc.open(bigmap,marker2); }); } 函数下载url(url,回调){ var request=window.ActiveXObject?新的ActiveXObject('Microsoft.XMLHTTP'):新的XMLHttpRequest; request.onreadystatechange=函数(){ if(request.readyState==4){ request.onreadystatechange=doNothing; 回调(request.responseText、request.status); } }; 打开('GET',url,true); 请求发送(空); } 函数parseXml(str){ if(window.ActiveXObject){ var doc=新的ActiveXObject('Microsoft.XMLDOM'); doc.loadXML(str); 退货单; }else if(window.DOMParser){ return(新的DOMParser).parseFromString(str,'text/xml'); } } 函数doNothing(){ 警报(“狗屎”) }
好吧,如果你在办公室检查代码,你需要的一切都在那里。看看:

1-连接到下拉标记按钮的
onclick
处理程序:

setTimeout
功能的在线文档可用:

3-示例中的
addMarker()
函数:

function drop() {
    for (var i = 0; i < neighborhoods.length; i++) {
        setTimeout(function() {
            addMarker();
        }, i * 200);
    }
}
function addMarker() {
    markers.push(new google.maps.Marker({
        position:  neighborhoods[iterator],
        map:       map,
        draggable: false,
        animation: google.maps.Animation.DROP
    }));
    iterator++;
}
google.maps.marker
动画的在线文档可用:


浏览一下代码,深入一点,你应该能够弄明白这一点。

好的,这里有一个似乎有效的解决方案。 谢谢你,肖恩,谢谢你的时间和提示

var iterator = 0;
var marker2;
var customIcons = {art: {icon: 'img/art_marker.png',},graff: {icon: 'img/graff_marker.png',}};

downloadUrl("php/addLocations.php", function (data) {
    var xml = parseXml(data);
    var markers = xml.documentElement.getElementsByTagName("marker");

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

    myFunction();
    function myFunction() { 
        var name = markers[i].getAttribute("name");
        var address = markers[i].getAttribute("address");
        var type = markers[i].getAttribute("type");
        var profile_image = markers[i].getAttribute("myimage");
        var point = new google.maps.LatLng(
        parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));

        setTimeout(function() { 
            addMarker(name, address, type, profile_image, point);
}, i * 2200);

    }

}
});

function addMarker (name, address, type, profile_image, point) {

        var icon = customIcons[type] || {};
        var html = "<b>" + name + "</b> <br/>" + address + "<br/>" + "<img src='uploads/" + profile_image + "' width='100px' />";
        var marker2 = new google.maps.Marker({
            map: bigmap,
            position: point,
            icon: icon.icon,
            animation: google.maps.Animation.DROP,
            shadow: icon.shadow
        });
        bindInfoWindow(marker2, bigmap, infoWindowLoc, html);
        iterator++;
}
var迭代器=0;
var-marker2;
var customIcons={art:{icon:'img/art_marker.png',},graff:{icon:'img/graff_marker.png',};
下载URL(“php/addLocations.php”,函数(数据){
var xml=parseXml(数据);
var markers=xml.documentElement.getElementsByTagName(“标记”);
对于(var i=0;i“+地址+”
“+”; var marker2=新的google.maps.Marker({ 地图:大地图, 位置:点,, icon:icon.icon, 动画:google.maps.animation.DROP, 阴影:icon.shadow }); bindInfoWindow(marker2、bigmap、infoWindowLoc、html); 迭代器++; }
嘿,谢谢你的回答!我试过很多东西。当我将seTimeout放入downloadUrl函数时,我总是会出错:uncaughttypeerror:无法调用undefined(匿名函数)的方法“getAttribute”如果看不到新版本的
downloadUrl
函数,就无法为您提供帮助。我马上注意到一件事:在
setTimeout
中,在创建传递给该函数的变量之前,您正在调用
addMarker
。当我在设置变量后调用该函数时,会出现相同的问题错误:-(在这一点上,我认为在您进行编辑和调试工作时,我无法为您提供更多帮助。如果您认为我的答案解决了您的原始问题,则通常单击问题旁边的箭头形状。
var iterator = 0;
var marker2;
var customIcons = {art: {icon: 'img/art_marker.png',},graff: {icon: 'img/graff_marker.png',}};

downloadUrl("php/addLocations.php", function (data) {
    var xml = parseXml(data);
    var markers = xml.documentElement.getElementsByTagName("marker");

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

    myFunction();
    function myFunction() { 
        var name = markers[i].getAttribute("name");
        var address = markers[i].getAttribute("address");
        var type = markers[i].getAttribute("type");
        var profile_image = markers[i].getAttribute("myimage");
        var point = new google.maps.LatLng(
        parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));

        setTimeout(function() { 
            addMarker(name, address, type, profile_image, point);
}, i * 2200);

    }

}
});

function addMarker (name, address, type, profile_image, point) {

        var icon = customIcons[type] || {};
        var html = "<b>" + name + "</b> <br/>" + address + "<br/>" + "<img src='uploads/" + profile_image + "' width='100px' />";
        var marker2 = new google.maps.Marker({
            map: bigmap,
            position: point,
            icon: icon.icon,
            animation: google.maps.Animation.DROP,
            shadow: icon.shadow
        });
        bindInfoWindow(marker2, bigmap, infoWindowLoc, html);
        iterator++;
}