Im using a mysql data base and php to query the database and the map api to show the map with our stores within a certain radius of the search location , with have two type of stores so i added a extra field to the mysql table called type and assigned a red or blue marker to the different stores , My php xml output has the store type so the page get a valid result but it show red markers for all stores so i think it is the javascript (api) that not working or wrong as the php query works and the xml out put works here are my files
##### html java script ####################### <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/ > <title>Markers.sharplesenterprise.com.au</title> <script src="http://maps.google.com/maps?file=api&v=2&key= @@@@@" type="text/javascript"></script> <script type="text/javascript"> //<![CDATA[ // set up two var's for the custom icons and download then -- fix download icons and save to disk stop downloads var iconBlue = new GIcon(); iconBlue.image = 'http://labs.google.com/ridefinder/images/ mm_20_blue.png'; iconBlue.shadow = 'http://labs.google.com/ridefinder/images/ mm_20_shadow.png'; iconBlue.iconSize = new GSize(12, 20); iconBlue.shadowSize = new GSize(22, 20); iconBlue.iconAnchor = new GPoint(6, 20); iconBlue.infoWindowAnchor = new GPoint(5, 1); var iconRed = new GIcon(); iconRed.image = 'http://labs.google.com/ridefinder/images/ mm_20_red.png'; iconRed.shadow = 'http://labs.google.com/ridefinder/images/ mm_20_shadow.png'; iconRed.iconSize = new GSize(12, 20); iconRed.shadowSize = new GSize(22, 20); iconRed.iconAnchor = new GPoint(6, 20); iconRed.infoWindowAnchor = new GPoint(5, 1); var customIcons = []; // var customIcons = ['type']; customIcons["Movingtogether"] = iconBlue; customIcons["Medicaltogether"] = iconRed; var map; var geocoder; //checks if browser is compatible eg. javascript, XHTML function load() { if (GBrowserIsCompatible()) { geocoder = new GClientGeocoder(); map = new GMap2(document.getElementById('map')); map.addControl(new GSmallMapControl()); map.addControl(new GMapTypeControl()); map.setCenter(new GLatLng(-33.894115, 151.266006), 4); } } //call search location method by looking up the location in the text box and then GEOCoding the address for SQL query function searchLocations() { var address = document.getElementById ('addressInput').value; geocoder.getLatLng(address, function(latlng) { if (!latlng) { alert(address + ' not found'); } else { searchLocationsNear(latlng); } }); } //takes the values [lat-lng] returned by search location and then run a query in the database to find //sites that are within a radius of the address passed to it. function searchLocationsNear(center) { var radius = document.getElementById ('radiusSelect').value; var searchUrl = 'phpsqlsearch_genxml.php?lat=' + center.lat () + '&lng=' + center.lng() + '&radius=' + radius; GDownloadUrl(searchUrl, function(data) { var xml = GXml.parse(data); var markers = xml.documentElement.getElementsByTagName ('marker'); map.clearOverlays(); var sidebar = document.getElementById('sidebar'); sidebar.innerHTML = ''; if (markers.length == 0) { sidebar.innerHTML = 'No results found.'; map.setCenter(new GLatLng(-33.894115, 151.266006), 4); return; } var bounds = new GLatLngBounds(); for (var i = 0; i < markers.length; i++) { var name = markers[i].getAttribute('name'); var address = markers[i].getAttribute('address'); var type = markers[i].getAttribute('type'); var distance = parseFloat(markers[i].getAttribute ('distance')); var point = new GLatLng(parseFloat(markers [i].getAttribute('lat')), parseFloat(markers[i].getAttribute ('lng'))); var marker = createMarker(point, name, address, type); map.addOverlay(marker); var sidebarEntry = createSidebarEntry(marker, name, address, type, distance); sidebar.appendChild(sidebarEntry); bounds.extend(point); } map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds)); }); } function createMarker(point, name, address, type) { var marker = new GMarker(point, customIcons[type]); var html = '<b>' + name + '</b> <br/>' + address; GEvent.addListener(marker, 'click', function() { marker.openInfoWindowHtml(html); }); return marker; } function createSidebarEntry(marker, name, address, type, distance) { var div = document.createElement('div'); var html = '<b>' + name + '</b> (' + distance.toFixed(1) + ')<br/>' + 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; } //]]> </script> <style type="text/css"> #addressInput { width: 251px; } </style> </head> <h1 style="text-align: center; color: #0000FF">Sharples Enterprise Find Sites Near Location</h1> <body onload="load()" onunload="GUnload()"> Address: <input type="text" id="addressInput"/> Radius: <select id="radiusSelect"> <option value="5" selected>5</option> <option value="10">10</option> <option value="15">15</option> <option value="25">25</option> <option value="50">50</option> <option value="100">100</option> <option value="200">200</option> </select> <input type="button" onclick="searchLocations()" value="Search Locations"/> <br/> <br/> <div style="width:900px; font-family:Arial, sans-serif; font-size:11px; border:1px solid black"> <table> <tbody> <tr id="cm_mapTR"> <td width="300" valign="top"> <div id="sidebar" style="overflow: auto; height: 600px; font-size: 11px; color: #000"></ div> </td> <td> <div id="map" style="overflow: hidden; width:600px; height:600px"></div> </td> </tr> </tbody> </table> </div> </body> </html> ####################################################### php query make xml ################################################## <?php require("phpsqlsearch_dbinfo.php"); // Get parameters from URL $center_lat = $_GET["lat"]; $center_lng = $_GET["lng"]; $radius = $_GET["radius"]; // Start XML file, create parent node $dom = new DOMDocument("1.0"); $node = $dom->createElement("markers"); $parnode = $dom->appendChild($node); // Opens a connection to a mySQL server $connection=mysql_connect (localhost, $username, $password); if (!$connection) { die("Not connected : " . mysql_error()); } // Set the active mySQL database $db_selected = mysql_select_db($database, $connection); if (!$db_selected) { die ("Can\'t use db : " . mysql_error()); } // Search the rows in the markers table $query = sprintf("SELECT address, name, lat, lng, type, ( 3959 * acos ( cos( radians('%s') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < '%s' ORDER BY distance LIMIT 0 , 20", mysql_real_escape_string($center_lat), mysql_real_escape_string($center_lng), mysql_real_escape_string($center_lat), mysql_real_escape_string($radius)); $result = mysql_query($query); $result = mysql_query($query); if (!$result) { die("Invalid query: " . mysql_error()); } //header("Content-type: text/xml"); // Iterate through the rows, adding XML nodes for each while ($row = @mysql_fetch_assoc($result)){ $node = $dom->createElement("marker"); $newnode = $parnode->appendChild($node); $newnode->setAttribute("name", $row['name']); $newnode->setAttribute("address", $row['address']); $newnode->setAttribute("lat", $row['lat']); $newnode->setAttribute("lng", $row['lng']); $newnode->setAttribute("type", $row['type']); $newnode->setAttribute("distance", $row['distance']); } echo $dom->saveXML(); ?> --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google Maps API" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/Google-Maps-API?hl=en -~----------~----~----~----~------~----~------~--~---
