2014-03-18 2 views
0

개발중인 애플리케이션 중 하나에서 v2에서 v3으로 Google 맵을 이동하려고합니다. 이 링크는 Tips for Upgrading Gmaps v2 to v3 more quickly입니다. 그러나 v2 API에서 GXml.parse 메소드의 대안을 찾을 수 없습니다.Gxml.parse google maps v2에서 v3으로 마이그레이션

이 스크립트에서 제공하는 downloadUrl 기능을 사용 중입니다. http://gmaps-samples-v3.googlecode.com/svn/trunk/xmlparsing/util.js.

function renderMap(mapControlFile) { 
      if (!mapControlFile || !xmlPath) { 
       downloadUrl(mapConfigFile, function(data,responseCode) { 

        try {errorTest = errorTest;} 
        catch(e) {errorTest = null;} 
        if (responseCode!=200 || errorTest=='yes') { 
         document.getElementById('mapCanvas').innerHTML = mapDataError; 
         document.getElementById('mapCanvas').innerHTML += '<p>Response Code: '+responseCode+'</p>'; 
         return; 
        } 
// The below line uses GXml which is now deprecated in v3 
        xmlDocument = GXml.parse(data); 
        //process config element -- restricted to 1 config element in the xml file 
        configElement = xmlDocument.documentElement.getElementsByTagName("config"); 
        //check for xml file parsing errors 
        if (configElement.length==0) { 
         document.getElementById('mapCanvas').innerHTML = mapDataError; //<div> tag in html document 
         return; 
        } 
        //try-catch handler for potential undeclared variable "auth" across all browsers (controls access during maintenance) 
        try {auth = auth;} 
        catch(e) {auth = null;} 
        //try-catch handler for potential undeclared variable "maintenanceTest" across all browsers (used for maintenance message testing) 
        try {maintenanceTest = maintenanceTest;} 
        catch(e) {maintenanceTest = null;} 
        //check if campus map system is offline for maintenance 
        if ((GXml.value(configElement[0].getElementsByTagName("offline")[0]) && auth==null) || maintenanceTest=='yes') { 
         document.getElementById('mapCanvas').innerHTML = GXml.value(configElement[0].getElementsByTagName("offlineMsg")[0]); //<div> tag in html document 
         return; 
        } 
        //initialize and load default map 
        xmlPath = GXml.value(configElement[0].getElementsByTagName("xmlPath")[0]); 
        overlayURL = GXml.value(configElement[0].getElementsByTagName("overlayURL")[0]); //set global variable 
        //create map and add controls (documentation at http://code.google.com/apis/maps/documentation/) 
        //map canvas is styled in ../css/campusmaps.css 
        //Google Maps API Version 2 
        map = new GMap2(document.getElementById("mapCanvas")); //<div> tag in html document 
        eval('map.setMapType('+GXml.value(configElement[0].getElementsByTagName("mapType")[0])+')'); 
        map.addControl(new GSmallZoomControl3D()); 
        zoomLevelMessage = GXml.value(configElement[0].getElementsByTagName("zoomLevelMessage")[0]); //set global variable 
        parseXml(xmlPath+GXml.value(configElement[0].getElementsByTagName("defaultMap")[0])); //function call to parse xml default map control file 
       }); //end downloadUrl() 
      } //end initialize and load default map 
      else { 
       parseXml(xmlPath+mapControlFile); //function call to parse xml map control files 
      } //end load all non-default maps 

    } //end renderMap() 

답변

1

몇 가지 옵션이 있습니다.

  1. jquery와 같은 타사 라이브러리를 사용하십시오.

    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"); 
        } 
    } 
    

    옵션 3 :

    function xmlParse(str) { 
        if (typeof ActiveXObject != 'undefined' && typeof GetObject != 'undefined') { 
        var doc = new ActiveXObject('Microsoft.XMLDOM'); 
        doc.loadXML(str); 
        return doc; 
        } 
    
        if (typeof DOMParser != 'undefined') { 
        return (new DOMParser()).parseFromString(str, 'text/xml'); 
        } 
    
        return createElement('div', null); 
    } 
    

  2. 사용 GXml.js
  3. downloadxml.js

옵션 2의 내 버전에서 같은 XML 파싱 루틴을 쓰기

관련 문제