2010-11-21 60 views
1

我正在研究證書程序的這個代碼,我嘗試從教師那裏獲得一些幫助,但他們似乎並不熟悉Google Map Apis的要求是在執行搜索時從XML文件中的地址存儲區顯示多個標記,即,我查找John,除了標記之外,我還爲他的地址存儲和指定的所有人標記了他的標記XML文件。所以我們的目標是能夠顯示5個人的5個標記和他們各自的信息窗口。Google Maps Api v3:信息窗口顯示地圖上所有標記的相同信息

一旦執行搜索,我可以獲取所有標記,我也可以獲取信息窗口,但所有信息窗口中顯示的信息在所有標記中相同,它會顯示名稱搜索。如果你想用拉里這個名字進行測試,你可以縮小其他標記並看到它們都顯示相同的名字。我不知道爲什麼?當我查看修復程序時,我發現Google API v3沒有任何功能,只是將API綁定到Api v2。任何幫助將不勝感激,我不知道如何停止使所有的信息窗口相同的循環。謝謝。 代碼爲波紋管:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"> 
</script> 

<script type="text/javascript"> 

var geocoder; 
var map; 
var marker; 

function load() { 

    geocoder = new google.maps.Geocoder(); 
    var latlng = new google.maps.LatLng(37.4419, -122.1419); 
    var myOptions = { 
     zoom: 13, 
     center: latlng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 

    } 
    map = new google.maps.Map(document.getElementById("mymap"), myOptions); 
} 

function showAddress(theAddress) { 
    var myaddress = theAddress 

    if (geocoder) { 
     geocoder.geocode({ 'address': myaddress}, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
      map.setCenter(results[0].geometry.location); 

      var marker = new google.maps.Marker({ 
       map: map, 
       position: results[0].geometry.location 
      }); 

     } else { 
      alert("Geocode was not successful for the following reason: " + status); 
     } 
     }); 
    } 
    } 

    function showAllAddress(AllAddress) { 

    var myaddress = AllAddress 

    if (geocoder) { 
     geocoder.geocode({ 'address': myaddress}, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 

      var marker = new google.maps.Marker({ 
       map: map, 
       position: results[0].geometry.location 
      }); 

     // Create Info Window   
      var infowindow = new google.maps.InfoWindow({ 
      content: document.getElementById("theName").innerHTML = fiobj[0].firstChild.data + " " + lastobj[0].firstChild.data+"<br />" + addressobj[0].firstChild.data+"<br />" + phoneobj[0].firstChild.data+"<br />" + emailobj[0].firstChild.data+"<br />" 
      }); 

      // click event for marker 
      google.maps.event.addListener(marker, 'click', function() { 


     // Opening the InfoWindow 
      infowindow.open(map, marker); 
      });  

     } else { 
      alert("Geocode was not successful for the following reason: " + status); 
     } 
     }); 
    } 
    } 
function createRequestObject() { 
    var ro 
    var browser = navigator.appName 
    if(browser == "Microsoft Internet Explorer"){ 
     ro = new ActiveXObject("Microsoft.XMLHTTP") 
    }else{ 
     ro = new XMLHttpRequest() 
    } 
    return ro 
} 

var http = createRequestObject() 

function sndReq() { 
    http.open('get', 'http://idrir.userworld.com/ajax/gmap.xml', true) 
    http.onreadystatechange = handleResponse 
    http.send(null) 
} 

function handleResponse() { 

    if(http.readyState == 4){ 

     document.getElementById("theName").innerHTML = "" 
     document.getElementById("address").innerHTML = "" 
     document.getElementById("phone").innerHTML = "" 
     document.getElementById("email").innerHTML = "" 

     var response = http.responseXML.documentElement 
     listings=response.getElementsByTagName("LISTING") 

     for (i=0;i<listings.length;i++) { 

      firstobj = listings[i].getElementsByTagName("FIRST") 

      if (firstobj[0].firstChild.data == document.getElementById("first").value){ 

      fiobj = listings[i].getElementsByTagName("FIRST") 
       lastobj = listings[i].getElementsByTagName("LAST") 
       addressobj = listings[i].getElementsByTagName("ADDRESS") 
       phoneobj = listings[i].getElementsByTagName("PHONE") 
       emailobj = listings[i].getElementsByTagName("EMAIL") 

//do not use this code bellow 
     // document.getElementById("theName").innerHTML = firstobj[0].firstChild.data + " " + lastobj[0].firstChild.data 
     // document.getElementById("address").innerHTML = addressobj[0].firstChild.data 
     // document.getElementById("phone").innerHTML = phoneobj[0].firstChild.data 
     // document.getElementById("email").innerHTML = emailobj[0].firstChild.data 

       theAddress = addressobj[0].firstChild.data 
       showAddress(theAddress) 

     } 

     } 

//添加for循環添加標記

 for (i=0;i<listings.length;i++) { 

       fobj = listings[i].getElementsByTagName("FIRST") 
       lobj = listings[i].getElementsByTagName("LAST") 
       aobj = listings[i].getElementsByTagName("ADDRESS") 
       pobj = listings[i].getElementsByTagName("PHONE") 
       eobj = listings[i].getElementsByTagName("EMAIL") 


     AllAddress = aobj[0].firstChild.data 
       showAllAddress(AllAddress) 


      } 
    } 
} 

</script> 
</head> 

<body onload="load()"> 
    <form id="search"> 
     <input type="text" id="first" /> 
     <input type="button" value="Search Phonebook" onClick="sndReq()" /> 
    </form> 
    <div id="theName"></div> 
    <div id="address"></div> 
    <div id="phone"></div> 
    <div id="email"></div> 
    <div id="mymap" style="width: 500px; height: 300px"></div> 
</body> 

</html> 

回答

0

我用這個和它的作品...但我不是一個親:我issue right now

var image = 'http://localhost:3000/images/icons/map/icons/icehockey.png'; 
            var myLatlng_1 = new google.maps.LatLng(53.9515,-113.116); 
            var contentString_1 = "<b>Provident Place (formerly Redwater Multiplex) Ice Rink</b><br> Redwater, Alberta, Canada<br><b><a href='http://localhost:3000/rink/redwater/provident-place-formerly-redwater-multiplex'>Go To The Rink's Profile</a></b>"; 
            var infowindow_1 = new google.maps.InfoWindow({content: contentString_1}); 
            var marker_1 = new google.maps.Marker({ 
             position: myLatlng_1, 
             map: map, 
             icon: image 
            }); 
            google.maps.event.addListener(marker_1, 'click', function() { 
             infowindow_1.open(map,marker_1); 
            }); 

            var myLatlng_2 = new google.maps.LatLng(53.4684,-113.409); 
            var contentString_2 = "<b>Ridgewood Skating Rink Ice Rink</b><br> Edmonton, Alberta, Canada<br><b><a href='http://localhost:3000/rink/edmonton/ridgewood-skating-rink'>Go To The Rink's Profile</a></b>"; 
            var infowindow_2 = new google.maps.InfoWindow({content: contentString_2}); 
            var marker_2 = new google.maps.Marker({ 
             position: myLatlng_2, 
             map: map, 
             icon: image 
            }); 
相關問題