2011-11-12 13 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> 

マップをレンダリングし、検索機能が正常に動作しますが、私は、このセクションでV3にV2 APIからのサイドバーコードを変更することで問題を抱えています。

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

私は'google.maps.event.addListener''GEvent.addDomListener'行を変更しましたが、私はまだ、サイドバーが動作するように得ることに問題を抱えていました。おそらく誰かがv2からv3にこれを変更するために必要なことを私に見せてもらえますか?

多くの感謝と種類について

答えて

0

'google.maps.event.addListener' から 'GEvent.addDomListener' を変更することを超えて、あなたはまた、

「GEvent.trigger(マーカーを、変更したいと思います'クリック');' ==> 'google.maps.event.trigger(マーカー、'クリック ');'それ以外

、機能が正常に見える...

1

あなた

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

リンクをクリックすることで呼び出されるグローバル配列最初

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 
} 

追加機能にあなたのマーカーを配置する必要がありますしますそして、 - > Markerclick(0)を呼び出します。あなたのHTMLリンクから

希望します。

関連する問題