2011-06-14 3 views
0

좋아요, 그래서 gmap을 사용하여 특정 위치에 대한 도시, 주, HTML 및 기타 정보를 저장하는 XML 파일에서 많은 위치를 표시합니다. 여기에 가장 가능성이 있습니다 100 개 위치.jquery gMap 동적 위치가 많이 있습니다.

내부 NEW 내 아약스 호출이와

var myMarkers = new Array; 
$(xml).find("location").each(function(){ 
    var locAddress = $(this).find("city").text() + "," + $(this).find("state").text() ; 
    var cc = $(this).find("cc").text(); 
    var bcc; 
    if ($(this).find("bcc")){ 
      bcc = $(this).find("bcc").text(); 
     }else{ 
      bcc = " - "; 
     } 
    var vendor =$(this).find("vendor").text(); 
    var hours = $(this).find("hours").text(); 
    var HTMLString = "<div class=\"map-balloon\"><h3>" + locAddress + "</h3>Vendor: " + vendor + "<br />CC#: " + cc + "<br />Bulk CC#: " + bcc + "<br />Hours: " + hours + "</div>" ; 

    myMarkers.push("{ address: \"" + locAddress + "\", html: \"" + HTMLString + "\"}"); 

}); 

$("#map").gMap({ markers: [myMarkers.toString()], address: "United States", zoom: 4 }); // shows the correct zoom and region, but markers do not display now. 
console.log(myMarkers.toString());//Shows the correct string we want 

문제는 IE7에서 작동, 파이어 폭스가 그것을 싫어하고 그림을 이동, 그것은 때마다로드입니다.

제 질문은 동적으로 여러 마커를 설정하는 가장 좋은 방법은 무엇입니까? 난 당신이 당신이 같은 JSON 개체를 만들려고 한 번 같은 시간에 모든 마커를 만들 수행해야한다고 생각

var myMarkers = new Array; 

    $.ajax({ 
    url: "tire-banks.xml", 
    dataType: ($.browser.msie) ? "text" : "xml", 
    async: false, 
    success: function(data){ 
        var xml;  
        if (typeof data == "string") { 
         xml = new ActiveXObject("Microsoft.XMLDOM"); 
         // xml.async = false; 
         xml.loadXML(data); 
        } else { 
         xml = data; 
        } 

        $(xml).find("location").each(function(){ 
         var locAddress = $(this).find("city").text() + "," + $(this).find("state").text() ; 
         var cc = $(this).find("cc").text(); 
         var bcc; 
         if ($(this).find("bcc")){ 
          bcc = $(this).find("bcc").text(); 
          }else{ 
          bcc = " - "; 
          } 
         var vendor =$(this).find("vendor").text(); 
         var hours = $(this).find("hours").text(); 
         var HTMLString = "<div><h3>" + locAddress + "</h3>Vendor: " + vendor + "<br />CC#: " + cc + "<br />Bulk CC#: " + bcc + "<br />Hours: " + hours + "</div>" ; 

         myMarkers.push({ address: locAddress, html: HTMLString}); 
        }); 

답변

0

: 는 여기에 새로운 작업 코드입니다. (나는 당신이 사용해야하는 문자열인지 확실하지 않지만, 아이디어를 얻었습니다.)

+0

좋아, 거기에 당신의 생각이 좋았습니다. 반영하기 위해 위의 코드를 업데이트했습니다. 배열의 경로를 선택했는데, 뒤에 오는 쉼표를 고려하여 Array.toString()은 동일한 효과를냅니다 (생각합니다). 우리가 그 영역에서 원하는 정확한 문자열을 생성하는 console.log() 영역에서. 그래도 여전히 작동하지 않습니다. –

+0

파이어 폭스에서 여전히 느리다는 뜻인가요? 또는 오류가 발생 했습니까? –

+0

죄송합니다. 위의 코드에서 주석을 작성했습니다. 올바른 줌 및 영역을 표시하지만 마커는 표시되지 않습니다. –

관련 문제