2013-03-31 3 views
0

J'apprends juste à utiliser les google maps avec des informations de ma base de données, et j'ai des problèmes. Je peux obtenir la carte pour apparaître sans problème, et l'information de ma base de données est tirée correctement dans la page de php, mais je ne peux pas sembler appeler cette information dans ma page html. J'essaie d'afficher de petites icônes sur la carte à chaque emplacement de la base de données, mais jusqu'à présent, rien n'apparaît à part la zone google maps. Toute aide serait grandement appréciée!Utiliser php avec Google Maps

googleMap.php

<? 
$username="myUsername"; 
$password="myPassword"; 
$database="myDatabase"; 
?> 

<?php 

function parseToXML($htmlStr) 
{ 
$xmlStr=str_replace('<','&lt;',$htmlStr); 
$xmlStr=str_replace('>','&gt;',$xmlStr); 
$xmlStr=str_replace('"','&quot;',$xmlStr); 
$xmlStr=str_replace("'",'&#39;',$xmlStr); 
$xmlStr=str_replace("&",'&amp;',$xmlStr); 
return $xmlStr; 
} 

// 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()); 
} 

// Select all the rows in the markers table 
$query = "SELECT * FROM markers"; 
$result = mysql_query($query); 
if (!$result) { 
die('Invalid query: ' . mysql_error()); 
} 

// Start XML file, echo parent node 


// Iterate through the rows, printing XML nodes for each 
while ($row = @mysql_fetch_assoc($result)){ 
// ADD TO XML DOCUMENT NODE 
echo 'marker '; 
echo 'name="' . parseToXML($row['name']) . '" '; 
echo 'address="' . parseToXML($row['address']) . '" '; 
echo 'lat="' . $row['lat'] . '" '; 
echo 'lng="' . $row['lng'] . '" '; 
echo 'type="' . $row['type'] . '" '; 
echo '/>'; 
} 
?> 

googleMap.html

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=utf-8"/> 
<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 customIcons = { 
    restaurant: { 
    icon: 'http://labs.google.com/ridefinder/images/mm_20_blue.png', 
    shadow: 'http://labs.google.com/ridefinder/images/mm_20_shadow.png' 
    }, 
    bar: { 
    icon: 'http://labs.google.com/ridefinder/images/mm_20_red.png', 
    shadow: 'http://labs.google.com/ridefinder/images/mm_20_shadow.png' 
    } 
}; 

function load() { 
    var map = new google.maps.Map(document.getElementById("map"), { 
    center: new google.maps.LatLng(47.6145, -122.3418), 
    zoom: 13, 
    mapTypeId: 'roadmap' 
    }); 
    var infoWindow = new google.maps.InfoWindow; 

    downloadUrl(googleMap.php, function(data) { 
    var xml = data.responseXML; 
    var markers = xml.documentElement.getElementsByTagName("marker"); 
    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 point = new google.maps.LatLng(
      parseFloat(markers[i].getAttribute("lat")), 
      parseFloat(markers[i].getAttribute("lng"))); 
     var html = "<b>" + name + "</b> <br/>" + address; 
     var icon = customIcons[type] || {}; 
     var marker = new google.maps.Marker({ 
     map: map, 
     position: point, 
     icon: icon.icon, 
     shadow: icon.shadow 
     }); 
     bindInfoWindow(marker, map, infoWindow, html); 
    } 
    }); 
} 

function bindInfoWindow(marker, map, infoWindow, html) { 
    google.maps.event.addListener(marker, 'click', function() { 
    infoWindow.setContent(html); 
    infoWindow.open(map, marker); 
    }); 
} 

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, request.status); 
    } 
    }; 

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

function doNothing() {} 
</script> 
</head> 

<body onload="load()"> 
<div id="map" style="width: 500px; height: 300px"></div> 
/body> 
</html> 
+0

Avez-vous du violon pour les gens à jouer avec? – qooplmao

Répondre

0

dans votre fichier PHP que vous êtes en écho chaque ligne. Mais le balisage n'est pas correct. Ce devrait être un vrai xml-node, vous affichez juste du texte.

header("Content-type: text/xml"); 

// Start XML file, create parent node 
$doc = domxml_new_doc("1.0"); 
$node = $doc->create_element("markers"); 
$parnode = $doc->append_child($node); 

// Iterate through the rows, adding XML nodes for each 
while ($row = @mysql_fetch_assoc($result)){ 
    // ADD TO XML DOCUMENT NODE 
    $node = $doc->create_element("marker"); 
    $newnode = $parnode->append_child($node); 

    $newnode->set_attribute("name", $row['name']); 
    $newnode->set_attribute("address", $row['address']); 
    $newnode->set_attribute("lat", $row['lat']); 
    $newnode->set_attribute("lng", $row['lng']); 
    $newnode->set_attribute("type", $row['type']); 
} 

Voir ce lien: https://developers.google.com/maps/articles/phpsqlajax_v3#outputxml

+0

L'ajout du "<" que vous avez indiqué n'a pas affecté l'affichage de la carte. Aussi, avant de l'ajouter, la page php listait correctement toutes les infos (nom, adresse, lat, etc ...) quand je l'ouvrais dans le navigateur, mais après avoir ajouté le "<", rien n'est sur la page php quand Je l'ai vu dans le navigateur – user2228503

+0

oh nvm vous avez changé votre réponse complètement haha ​​ – user2228503

+0

Ouais, mais l'étirement est le même. Le fait que vous n'avez rien vu dans votre navigateur en ajoutant le stUrb