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