-2

私はGoogleマップを持っています..マーカーはxmlからデータを取得します..すべてうまくいきます..しかし、xmlからタブに情報を書きたい..しかし、どうすればよいかわかりません..plsは私のコードを見てください..私を助けてください:((

          var gmarkers = [];
          var gicons = [];
           map = null;

var iconImage = new google.maps.MarkerImage('images/intake.png',

      new google.maps.Size(20, 34),

      new google.maps.Point(0,0),

      new google.maps.Point(9, 34));

  var iconShadow = new google.maps.MarkerImage('http://www.google.com/mapfiles/shadow50.png',
      new google.maps.Size(37, 34),
      new google.maps.Point(0,0),
      new google.maps.Point(9, 34));

  var iconShape = {
      coord: [9,0,6,1,4,2,2,4,0,8,0,12,1,14,2,16,5,19,7,23,8,26,9,30,9,34,11,34,11,30,12,26,13,24,14,21,16,18,18,16,20,12,20,8,18,4,16,2,15,1,13,0],
      type: 'poly'
  };

   var contentString = [

      '<div id="tabs">',

      '<ul>',

        '<li><a href="#tab-1"><span>Info</span></a></li>',
        '<li><a href="#tab-2"><span>Info</span></a></li>',
        '<li><a href="#tab-3"><span>Photo</span></a></li>',
      '</ul>',

      '<div id="tab-1">',

      ' i must add info here',

      '</div>',
      '<div id="tab-2">',

       '<p>and here</p>',

      '</div>',

      '<div id="tab-3">',

        '<p>Any info and photo will be here.. <br/> <img src="images/logo.gif" height="60" ></p>',
      '</div>',
      '</div>'
    ].join('');  

var infowindow = new google.maps.InfoWindow(
  { 

content: contentString

  });


      // A function to create the marker and set up the event window

function createMarker(latlng,name,html,category) {

    var contentString = html;

    var marker = new google.maps.Marker({

        position: latlng,
        icon: gicons[category],
        shadow: iconShadow,
        map: map,
        title: name,

        zIndex: Math.round(latlng.lat()*-100000)<<5

        });

        // === Store the category and name info as a marker properties ===
        marker.mycategory = category;      

        marker.myname = name;

        gmarkers.push(marker);

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

      // == shows all markers of a particular category, and ensures the checkbox is checked ==

      function show(category) {
        for (var i=0; i<gmarkers.length; i++) {
          if (gmarkers[i].mycategory == category) {
            gmarkers[i].setVisible(true);
          }
        }
        // == check the checkbox ==
        document.getElementById(category+"box").checked = true;
      }

      // == hides all markers of a particular category, and ensures the checkbox is cleared ==
      function hide(category) {
        for (var i=0; i<gmarkers.length; i++) {
          if (gmarkers[i].mycategory == category) {
            gmarkers[i].setVisible(false);
          }
        }
        // == clear the checkbox ==
        document.getElementById(category+"box").checked = false;
        // == close the info window, in case its open on a marker that we just hid
        infowindow.close();
      }

      // == a checkbox has been clicked ==
      function boxclick(box,category) {
        if (box.checked) {
          show(category);
        } else {
          hide(category);
        }

      }







  function initialize() {
    var myOptions = {
      zoom: 8,
      center: new google.maps.LatLng(40.0000, 48.0000),
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById("map"), myOptions);


   google.maps.event.addListener(infowindow, 'domready', function() {
      $("#tabs").tabs();
    });


    google.maps.event.addListener(map, 'click', function() {
        infowindow.close();
        });

ここにxmlがあります

      // Read the data

      downloadUrl("xml/cat.xml", function(doc) {

  var xml = xmlParse(doc);

  var markers = xml.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 address = markers[i].getAttribute("address");
          var id = markers[i].getAttribute("id");
          var name = markers[i].getAttribute("name");
          var html = contentString;
          var category = markers[i].getAttribute("category");
          // create the marker
          var marker = createMarker(point,name,html,category);
        }


        // == show or hide the categories initially ==
        show("intake");
        hide("reservoir");
        hide("wps");
        show("wtp");
        hide("wwps");
        hide("wwtp");
        // == create the initial sidebar ==

      });


 toggleKML = function(x) { 
          i = x;
        //alert(i);
        //alert(toggleArray[0]);
        //alert(toggleArray[1]);
        //alert(toggleArray[2]);        
        if (toggleArray[i] == 1) {
        kmlArray[i].setMap(null);

        toggleArray.splice(i,1,'0');                  
        }
        else {
        kmlArray[i].setMap(map);

        toggleArray.splice(i,1,'1');        
        }
 }}
</script>

みんな私を助けてください((..

12時間以上これに取り組んでいますが、うまくいきません((..

xml データを contentstring に入れるにはどうすればよいですか?

私のxmlの例も..

<marker code="20070" id="WWS7" name="8 Wells Nisaqala Gallery" title="NWSSP-2" capacity="9.84" completed="0" lat="xxx" lng="xx"  category="intake"/>
4

2 に答える 2

0

私はあなたが求めていることに気づきました。ここで私のコードを確認できます: http://turom-mice.it/condorincentive/incentive.html (Firebug を使用してスクリプトと関連する XML ファイルを取得します)可能な限りですが、説明が必要な場合はお尋ねください。コードは、ここと Google Maps v3 API/examples のさまざまな検索と読み取りの結果です。

それが役に立てば幸い。発疹*

于 2012-10-23T13:57:25.743 に答える
0

マーカーのクリック イベントに基づいて、情報ウィンドウのコンテンツを設定する必要があります。また、おそらくクロージャーを使用してこれを行う必要があります。現在、変更されることはなく、毎回同じコンテンツを設定していますcontentString。XML ファイルの値を使用して、クリック イベント ハンドラーでそのコンテンツを設定するだけです。

于 2012-10-22T15:04:29.390 に答える