2011-11-12 27 views
0

我想知道是否有人可以幫助我。店面定位器與邊欄

我試圖把一個商店定位器放在一個側邊欄,我使用下面的代碼是我在互聯網上找到的東西的合併。

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/> 
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
    <title>Google Maps AJAX + mySQL/PHP Example</title> 
    <script src="http://maps.google.com/maps/api/js?sensor=false" 
      type="text/javascript"></script> 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var map; 
    var markers = []; 
    var infoWindow; 
    var locationSelect; 

    function load() { 
     map = new google.maps.Map(document.getElementById("map"), { 
     center: new google.maps.LatLng(40, -100), 
     zoom: 4, 
     mapTypeId: 'roadmap', 
     mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU} 
     }); 
     infoWindow = new google.maps.InfoWindow(); 

     locationSelect = document.getElementById("locationSelect"); 
     locationSelect.onchange = function() { 
     var markerNum = locationSelect.options[locationSelect.selectedIndex].value; 
     if (markerNum != "none"){ 
      google.maps.event.trigger(markers[markerNum], 'click'); 
     } 
     }; 
    } 

    function searchLocations() { 
    var address = document.getElementById("addressInput").value; 
    var geocoder = new google.maps.Geocoder(); 
    geocoder.geocode({address: address}, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
     searchLocationsNear(results[0].geometry.location); 
     } else { 
     alert(address + ' not found'); 
     } 
    }); 
    } 

    function clearLocations() { 
    infoWindow.close(); 
    for (var i = 0; i < markers.length; i++) { 
     markers[i].setMap(null); 
    } 
    markers.length = 0; 

    locationSelect.innerHTML = ""; 
    var option = document.createElement("option"); 
    option.value = "none"; 
    option.innerHTML = "See all results:"; 
    locationSelect.appendChild(option); 
    } 

    function searchLocationsNear(center) { 
    clearLocations(); 

    var radius = document.getElementById('radiusSelect').value; 
    var searchUrl = 'loaddistance.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius; 
    downloadUrl(searchUrl, function(data) { 
     var xml = parseXml(data); 
     var markerNodes = xml.documentElement.getElementsByTagName("marker"); 
     var bounds = new google.maps.LatLngBounds(); 
     for (var i = 0; i < markerNodes.length; i++) { 
     var name = markerNodes[i].getAttribute("name"); 
     var address = markerNodes[i].getAttribute("address"); 
     var distance = parseFloat(markerNodes[i].getAttribute("distance")); 
     var latlng = new google.maps.LatLng( 
       parseFloat(markerNodes[i].getAttribute("lat")), 
       parseFloat(markerNodes[i].getAttribute("lng"))); 

     createOption(name, distance, i); 
     createMarker(latlng, name, address); 
     bounds.extend(latlng); 
     } 
     map.fitBounds(bounds); 
     locationSelect.style.visibility = "visible"; 
     locationSelect.onchange = function() { 
     var markerNum = locationSelect.options[locationSelect.selectedIndex].value; 
     google.maps.event.trigger(markers[markerNum], 'click'); 
     }; 
     }); 
    } 

    function createMarker(latlng, name, address) { 
     var html = "<b>" + name + "</b> <br/>" + address; 
     var marker = new google.maps.Marker({ 
     map: map, 
     position: latlng 
     }); 
     google.maps.event.addListener(marker, 'click', function() { 
     infoWindow.setContent(html); 
     infoWindow.open(map, marker); 
     }); 
     markers.push(marker); 
    } 

function createSidebarEntry(marker, name, address, distance) { 
    var div = document.createElement('div'); 
    var html = '' + name + ' (' + distance.toFixed(1) + ')' + address; 
    div.innerHTML = html; 
    div.style.cursor = 'pointer'; 
    div.style.marginBottom = '5px'; 
    GEvent.addDomListener(div, 'click', function() { 
    GEvent.trigger(marker, 'click'); 
    }); 
    GEvent.addDomListener(div, 'mouseover', function() { 
    div.style.backgroundColor = '#eee'; 
    }); 
    GEvent.addDomListener(div, 'mouseout', function() { 
    div.style.backgroundColor = '#fff'; 
    }); 
    return div; 
} 
    function createOption(name, distance, num) { 
     var option = document.createElement("option"); 
     option.value = num; 
     option.innerHTML = name + "(" + distance.toFixed(1) + ")"; 
     locationSelect.appendChild(option); 
    } 

    function downloadUrl(url, callback) { 
     var request = window.ActiveXObject ? 
      new ActiveXObject('Microsoft.XMLHTTP') : 
      new XMLHttpRequest; 

     request.onreadystatechange = function() { 
     if (request.readyState == 4) { 
      request.onreadystatechange = doNothing; 
      callback(request.responseText, request.status); 
     } 
     }; 

     request.open('GET', url, true); 
     request.send(null); 
    } 

    function parseXml(str) { 
     if (window.ActiveXObject) { 
     var doc = new ActiveXObject('Microsoft.XMLDOM'); 
     doc.loadXML(str); 
     return doc; 
     } else if (window.DOMParser) { 
     return (new DOMParser).parseFromString(str, 'text/xml'); 
     } 
    } 

    function doNothing() {} 

    //]]> 
    </script> 
    </head> 

    <body style="margin:0px; padding:0px;" onLoad="load()"> 
    <div> 
    <input type="text" id="addressInput" size="10"/> 
    <select id="radiusSelect"> 
     <option value="25" selected>25mi</option> 
     <option value="100">100mi</option> 
     <option value="200">200mi</option> 
    </select> 

    <input type="button" onClick="searchLocations()" value="Search"/> 
    </div> 
    <div><select id="locationSelect" style="width:100%;visibility:hidden"></select></div> 
    <table> 
    <tbody> 
     <tr id="cm_mapTR"> 

     <td width="200" valign="top"> <div id="sidebar" style="overflow: auto; height: 400px; font-size: 11px; color: #000"></div> 

     </td> 
     <td> <div id="map" style="overflow: hidden; width:400px; height:400px"></div> </td> 

     </tr> 
    </tbody> 
    </table> 

    </body> 
</html> 

的地圖渲染和搜索功能工作正常,但我在不斷變化的,從V2的API v3的側邊欄的代碼是這一部分的問題。

function createSidebarEntry(marker, name, address, distance) { 
     var div = document.createElement('div'); 
     var html = '' + name + ' (' + distance.toFixed(1) + ')' + address; 
     div.innerHTML = html; 
     div.style.cursor = 'pointer'; 
     div.style.marginBottom = '5px'; 
     GEvent.addDomListener(div, 'click', function() { 
     GEvent.trigger(marker, 'click'); 
     }); 
     GEvent.addDomListener(div, 'mouseover', function() { 
     div.style.backgroundColor = '#eee'; 
     }); 
     GEvent.addDomListener(div, 'mouseout', function() { 
     div.style.backgroundColor = '#fff'; 
     }); 
     return div; 
    } 

我確實改變了'GEvent.addDomListener''google.maps.event.addListener',但我仍然有在獲得側邊欄的工作問題。也許有人可能請告訴我我需要做些什麼才能將其從v2更改爲v3。

非常感謝和親切的問候

回答

0

除了改變 'GEvent.addDomListener' 到 'google.maps.event.addListener',你也想改變

「GEvent.trigger(標記, '點擊');」 ==>'google.maps.event.trigger(marker,'click');'

除此之外,該功能看起來很好..

1

你需要把你的標誌,以一個全球性的陣列的第一

var gMarkerArr = new Array(); 


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


var locations = data.locations[i]; 

    marker = new google.maps.Marker({ 
       position: new google.maps.LatLng(locations.Latitude, locations.Longitude), 
       map: map 
      }); 

gMarkerArr.push(marker); // like this 
} 

通過鏈接點擊稱爲附加功能

function Markerclick(index) 
{ 
    google.maps.event.trigger( gMarkerArr[index], 'click'); 
} 

然後打電話 - > Markerclick(0);從你的html鏈接

希望這會有所幫助...