maps verwerkt points niet

Status
Niet open voor verdere reacties.

ProCx

Gebruiker
Lid geworden
28 okt 2011
Berichten
27
Ik ben bezig voor een schoolopdracht om een map te implementeren met pointers. Ik heb alleen het probleem dat de pointers nergens te vinden zijn.. Hoop dat iemand mij hiermee kan helpen=]

de createXML code: (de echo print alle xml goed.:)

Code:
<?php
include("db.php");
$doc = new DOMDocument("1.0");
$node = $doc->createElement("stations");
$parnode = $doc->appendChild($node);
$result = mysql_query("SELECT * FROM `stations`");
while($row = mysql_fetch_assoc($result)){
	$node = $doc->createElement("stations");
	$newnode = $parnode->appendChild($node);	
	$newnode->setAttribute("name", $row['name']);
	$newnode->setAttribute("lat", $row['latitude']);
	$newnode->setAttribute("lng", $row['longitude']);
}

$xmlfile = $doc->saveXML();
echo $xmlfile;
?>

klein stukje van output:
[XML]<?xml version="1.0"?>
<stations><stations name="JAN MAYEN" lat="70.933" lng="-8.667"/><stations name="BRINGELAND" lat="61.383" lng="5.867"/><stations name="HORNSUND" lat="77" lng="15.5"/><stations name="SVALBARD LUFTHAVN" lat="78.25" lng="15.467"/><stations name="ANDOYA" lat="69.3" lng="16.133"/>
[/XML]

De weergavecode van de map op mijn site is:
Code:
<?php
session_start();
/**
 * Page to see the world map with the specific stations.
 **/
include("menuitems.php");
include("loggeditem.php");
?>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css" />
<script type="text/javascript"
    src="http://maps.googleapis.com/maps/api/js?sensor=false">
</script>
<script type="text/javascript">
  function initialize() {
    var myLatlng = new google.maps.LatLng(53.52,27.30);
  var myOptions = {
    zoom: 4,
    center: myLatlng,
    mapTypeId: google.maps.MapTypeId.TERRAIN
  }
  var map = new google.maps.Map(document.getElementById("body"), myOptions);
  
  GDownloadUrl("createXML.php", function(data) {
          var xml = GXml.parse(data);
          var markers = xml.documentElement.getElementsByTagName("stations");
          for (var i = 0; i < markers.length; i++) {
            var name = markers[i].getAttribute("name");
            var point = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")),
                                    parseFloat(markers[i].getAttribute("lng")));
            var marker = new google.maps.Marker({    
     position: point, 
      title: name  
	  });
  	  marker.setMap(map);
          }
        });
      }
</script>
</head>
<body onload="initialize()">
  <div id="header">
</div>
<div id="body"></div>
<div id="footer">
© The Cloud Ltd.
</div>
</body>
</html>

Dit geeft geen enkele weergave van een pointer.. Doe ik het handmatig via de volgende code werkt het wel..

Code:
 var myLatlng = new google.maps.LatLng(64,27);	  
   var marker = new google.maps.Marker({    
     position: myLatlng, 
      title: "name"  
	  });
  	  marker.setMap(map);

Iemand een idee? Alvast bedankt!
 
Als je je stukje code nou eens netjes neerschrijft:
[js]GDownloadUrl("createXML.php", function(data)
{
var xml = GXml.parse(data);
var markers = xml.documentElement.getElementsByTagName("stations");

var i, name, point, marker, x, y;

for(i = 0; i < markers.length; i++)
{
name = markers.getAttribute("name");

x = parseFloat(markers.getAttribute("lat"));
y = parseFloat(markers.getAttribute("lng"));

// eens eventjes zien:
alert('x: ' + x + '\ny: ' + y);

point = new google.maps.LatLng(x, y);

marker = new google.maps.Marker({position: point, title: name});

marker.setMap(map);
}
});[/js]

kan je eens bij die x/y variabelen een alert() gooien; welke waarden hebben x en y? Ik denk dat het daar ergens fout gaat. Als dit echter de correcte waardes geeft, moet je je alert() eens voor alle andere variabelen proberen om te kijken wat het probleem is.
 
Als je je stukje code nou eens netjes neerschrijft:
[js]GDownloadUrl("createXML.php", function(data)
{
var xml = GXml.parse(data);
var markers = xml.documentElement.getElementsByTagName("stations");

var i, name, point, marker, x, y;

for(i = 0; i < markers.length; i++)
{
name = markers.getAttribute("name");

x = parseFloat(markers.getAttribute("lat"));
y = parseFloat(markers.getAttribute("lng"));

// eens eventjes zien:
alert('x: ' + x + '\ny: ' + y);

point = new google.maps.LatLng(x, y);

marker = new google.maps.Marker({position: point, title: name});

marker.setMap(map);
}
});[/js]

kan je eens bij die x/y variabelen een alert() gooien; welke waarden hebben x en y? Ik denk dat het daar ergens fout gaat. Als dit echter de correcte waardes geeft, moet je je alert() eens voor alle andere variabelen proberen om te kijken wat het probleem is.



Ik was nieuw met javascript. Ik heb met die alerts gezien dat opvallend genoeg wanneer ik voor de GDownloadURL een alert zet, die wel verschijnd, maar erna niet.:confused:
 
Dan duidt dat erop dat de callback niet aangeroepen wordt. Druk eens op ctrl+shift+J in Firefox/chrome, dan krijg je een foutenconsole. Zegt dat iets?

Also, is createXML.php de correcte php file?
 
Een uncaught ReferenceError: GDownloadUrl is not defined error.
 
A-ha! Nou, daar is je probleem, en je oplossing! Blijkbaar bestaat de functie genaamd GDownloadUrl niet!


Hoe precies heb je deze echter wel in je code gezet? Ik neem aan dat je 't ergens van hebt gekopieerd?
 
Het feit dat ik voor een schoolopdracht een worldmap met markers van weerstations moet hebben. Deze info stond in een database (latitude en longitude) dus ik simpelweg zoeken op iets als "maps sql" en kwam op google code uit.=]
 
Eh, okay. Dat is allemaal prima, maar wat ik bedoel is dit: op de plek waar je deze code had gevonden moet ergens bij hebben gestaan waar de functie GDownloadUrl vandaan moet komen! Hetzelfde geld voor het GXml object (geeft nog geen error, omdat 'ie daar nog niet 'gekomen' is; hij brak al bij de 1e missende functie-referentie).



:thumb:
 
Klopt. Inmiddels via een andere manier dan GDownloadUrl gedaan en code gefixed. Ik stuur het nu via een xml file ipv een pgp file. Werkt goed nu. Bedankt voor je info!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan