Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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 谷歌从在Chrome中工作的xml映射标记,而不是Firefox/IE_Javascript_Google Maps Api 3 - Fatal编程技术网

Javascript 谷歌从在Chrome中工作的xml映射标记,而不是Firefox/IE

Javascript 谷歌从在Chrome中工作的xml映射标记,而不是Firefox/IE,javascript,google-maps-api-3,Javascript,Google Maps Api 3,我有一个自定义的google地图,它从xml文档中加载了一堆标记,并创建了一个包含所有标记的边栏列表。它在Chrome中运行良好,但在Firefox或IE中不会加载侧边栏和标记。我在Windows7机器上使用所有浏览器的最新版本 -我编辑这篇文章是为了添加xml解析器代码,因为这可能就是问题所在。我甚至不记得我是从哪里得到这个解析器代码的,但它已经出现了,并且在另一个具有类似代码的项目中仍然可以正常工作 javascript var side_bar_html = "";

我有一个自定义的google地图,它从xml文档中加载了一堆标记,并创建了一个包含所有标记的边栏列表。它在Chrome中运行良好,但在Firefox或IE中不会加载侧边栏和标记。我在Windows7机器上使用所有浏览器的最新版本

-我编辑这篇文章是为了添加xml解析器代码,因为这可能就是问题所在。我甚至不记得我是从哪里得到这个解析器代码的,但它已经出现了,并且在另一个具有类似代码的项目中仍然可以正常工作

javascript

      var side_bar_html = ""; 

    var routes = {
     y: {
    name: "Winter Routes",
        url: "http://www.huts.org/Tests/Maps/GPSTracks/10thsystemHutsYurtsMap.kml"

    },


};

      var gmarkers = []; 


      var map = null;
// A function to create the marker and set up the event window function 
function createMarker(latlng, name, html) {
    var contentString = html;
    var marker = new google.maps.Marker({
        position: latlng,
        icon: 'images/marker2_ltblue.png',
        map: map,
        suppressInfoWindows: true,
        zIndex: Math.round(latlng.lat()*-100000)<<5
        });

    google.maps.event.addListener(marker, 'click', function() {
        infowindow.setContent(contentString); 
        infowindow.open(map,marker);
        });

   google.maps.event.addListener(marker, 'click', function() {
    // map.setZoom(9);
     map.setCenter(marker.getPosition());
     });
    // save the info we need to use later for the side_bar
    gmarkers.push(marker);
    // add a line to the side_bar html
    side_bar_html += '<a href="javascript:myclick(' + (gmarkers.length-1) + ')" onmouseover="gmarkers['+ (gmarkers.length-1)  +'].setAnimation(google.maps.Animation.BOUNCE)" onmouseout="gmarkers['+ (gmarkers.length-1)  +'].setAnimation(null)">' + name + '<\/a><br>';
}

// This function picks up the click and opens the corresponding info window
function myclick(i) {
  google.maps.event.trigger(gmarkers[i], "click");
}

function initialize() {
  // create the map
  var myOptions = {
    zoom: 9,
    center: new google.maps.LatLng(39.369804, -106.388725),
    mapTypeControl: true,
    mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
    navigationControl: true,
    mapTypeId: google.maps.MapTypeId.TERRAIN
  }
  map = new google.maps.Map(document.getElementById("map_canvas"),
                                myOptions);

  google.maps.event.addListener(map, 'click', function() {
        infowindow.close();
        });
      // Read the data from example.xml
      downloadUrl("gMapsHuts.xml", function(doc) {
        var xmlDoc = xmlParse(doc);
        var markers = xmlDoc.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {
          // obtain the attribues of each marker
          var lat = parseFloat(markers[i].getAttribute("lat"));
          var lng = parseFloat(markers[i].getAttribute("lng"));
          var point = new google.maps.LatLng(lat,lng);
          var name = markers[i].getAttribute("label");
          var html = GXml.value(markers[i].getElementsByTagName("infowindow")[0]);
          var category = markers[i].getAttribute("category");
          var season = markers[i].getAttribute("season");
          // create the marker
          var marker = createMarker(point,name,html,category);
        }
        // put the assembled side_bar_html contents into the side_bar div
        document.getElementById("side_bar").innerHTML = side_bar_html;
      });
      createRouteTogglers();
    }

 // the important function... routes[id].xxxxx refers back to the top 
function toggleRoute(checked, id) {

    if (checked) {

        var layer = new google.maps.KmlLayer(routes[id].url, {
            preserveViewport: true,
            suppressInfoWindows: false 
        });
        // store kml as obj
        routes[id].obj = layer;
        routes[id].obj.setMap(map);
    }
    else {
        routes[id].obj.setMap(null);
        delete routes[id].obj;
    }

};

// create the Routes controls
function createRouteTogglers() {

    var html = "<form><ul>";
    for (var prop in routes) {
        html += "<li id=\"selector-" + prop + "\"><input type='checkbox' id='" + prop + "'" +
        " onclick='highlight(this,\"selector-" + prop + "\"); toggleRoute(this.checked, this.id)' \/>" +
        routes[prop].name + "<\/li>";
    }
    html += "<\/ul><\/form>";

    document.getElementById("routeLayers").innerHTML = html;
};

// Append Class on Select
function highlight(box, listitem) {
    var selected = 'selected';
    var normal = 'normal';
    document.getElementById(listitem).className = (box.checked ? selected: normal);
};
var infowindow = new google.maps.InfoWindow(
  { 
    size: new google.maps.Size(150,50)
  });
xml解析器

function GXml(){}
GXml.value=value;
GXml.parse=parse;

function value(node){
   if(!node){
      return"";
   }
   var retStr="";
   if(node.nodeType==3||node.nodeType==4||node.nodeType==2){
      retStr+=node.nodeValue;
   }else if(node.nodeType==1||node.nodeType==9||node.nodeType==11){
      for(var i=0;i<node.childNodes.length;++i){
         retStr+=arguments.callee(node.childNodes[i]);
      }
   }
   return retStr;
}


function parse(textDoc){
   try{
      if(typeof ActiveXObject!="undefined"&&typeof GetObject!="undefined"){
         var b=new ActiveXObject("Microsoft.XMLDOM");
         b.loadXML(textDoc);
         return b;
      }else if(typeof DOMParser!="undefined"){
         return(new DOMParser()).parseFromString(textDoc,"text/xml");
      }else{
         return Wb(textDoc);
      }
   }
   catch(c){
      P.incompatible("xmlparse");
   }
   try{
      return Wb(textDoc);
   }
   catch(c){
      P.incompatible("xmlparse");
      return document.createElement("div");
   }
}

function P(){}
P.write=function(a,b){}
;P.writeRaw=function(a){}
;P.writeXML=function(a){}
;P.writeURL=function(a){}
;P.dump=function(a){}
;P.incompatible=function(){}
;P.clear=function(){}
;

function Wb(a){
   return null;
}

可能是xml解析器的特定于浏览器的行为存在问题。很难从你的帖子中看出。我在上面添加了xml解析器代码。我不记得这段代码是从哪里来的,显然我还是个新手,所以非常感谢您的帮助?它在Firefox/IE中有效吗?他们允许你加载吗?看起来有效,如果是这样的话:或者。看起来它无效,但您找到了错误并修复了它。