2014-05-18 2 views
0

PHP에서 날짜 변수를 기반으로 마커가로드되는 Google지도가 있습니다. 기본 날짜는 현재 날짜입니다. 이제 날짜를 양식을 통해 변경할 수 있기를 바랍니다. 지도가있는 페이지에서 사용자가 날짜를 선택할 수있는 양식이 있으며 선택한 날짜를 기준으로지도에 마커를 다시로드해야합니다. onChange 이벤트 호출 mytest(); 함수는지도를 다시로드합니다. 나는 그것을 작동시킬 수 없다. 날짜가 바뀌면 아무 일도 일어나지 않는다. 여기 내 코드가있다.ajax request xml from php

자바 스크립트

function mytest() { 


var map = '' 

function MyMap(){ 


    var im = 'http://www.robotwoods.com/dev/misc/bluecircle.png'; 
    var CustomMarker = 'http://findmyyard.com/images/MarkerIcon.png'; 


    if(navigator.geolocation){ 

     navigator.geolocation.getCurrentPosition(locate); 
    } else { 

    alert('Please enable "Location Sharing"') 

    } 

    function locate(position){ 

     var myLatLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 
     var mapOptions = { 
      zoom: 12, 
      center: myLatLng, 
      mapTypeId: google.maps.MapTypeId.ROADMAP, 
      zoomControl: true, 
      streetViewControl: false, 
     } 
     var map = new google.maps.Map(document.getElementById('map-canvas'), 
             mapOptions); 
     var userMarker = new google.maps.Marker({ 
      position: myLatLng, 
      map: map, 
      icon: im 
     }); 
    var infoWindow = new google.maps.InfoWindow; 

    var date = document.getElementById('finddate').value; 
     // Change this depending on the name of your PHP file 

     downloadUrl("phps/xmltest.php"+ date, 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 dt1 = markers[i].getAttribute("date1"); 
      var dt2 = markers[i].getAttribute("date2"); 
      var dt3 = markers[i].getAttribute("date3"); 
      var tm1 = markers[i].getAttribute("time1"); 
      var tm2 = markers[i].getAttribute("time2"); 
      var tm3 = markers[i].getAttribute("time3"); 
      var html = "<b>" + name + "</b> <br/>" + "Date of Yard Sale: " + dt1 + '&nbsp;' + tm1 + '&nbsp;' + dt2 + '&nbsp;' + tm2 + '&nbsp;' + dt3 + '&nbsp;' + tm3 + '&nbsp;' + "<br/>" + address; 
      var point = new google.maps.LatLng(
       parseFloat(markers[i].getAttribute("lat")), 
       parseFloat(markers[i].getAttribute("lng"))); 
      var marker = new google.maps.Marker({ 
      map: map, 
      position: point, 
      icon: CustomMarker 
      }); 

      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, html); 
     }); 
    } 

    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() {} 
    } 

}} 

PHP - xmltest.php은

<?php 



     $date = $_GET['date']; 

     if($date == "''" || $date == "Today") { $date = date('m-d-Y');} else {$date = $_GET['date'];} 




$dom = new DOMDocument("1.0"); 
$node = $dom->createElement("markers"); 
$parnode = $dom->appendChild($node); 

// Opens a connection to a MySQL server 

mysql_connect("localhost", "someuser", "somepw"); 

// Set the active MySQL database 

$db_selected = mysql_select_db("Registration2"); 
if (!$db_selected) { 
    die ('Can\'t use db : ' . mysql_error()); 
} 

// Select all the rows in the markers table 



$query = "SELECT * FROM REGISTERED2 WHERE DateONE = '$date' or DateTWO = '$date' or DateTHREE = '$date'"; 
$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)){ 
    // ADD TO XML DOCUMENT NODE 
    $node = $dom->createElement("marker"); 
    $newnode = $parnode->appendChild($node); 
    $newnode->setAttribute("name",$row['Name']); 
    $newnode->setAttribute("address", $row['Address']); 
    $newnode->setAttribute("lat", $row['Latitude']); 
    $newnode->setAttribute("lng", $row['Longitude']); 
    $newnode->setAttribute("date1", $row['DateONE']); 
    $newnode->setAttribute("date2", $row['DateTWO']); 
    $newnode->setAttribute("date3", $row['DateTHREE']); 
    $newnode->setAttribute("time1", $row['TimeONE']); 
    $newnode->setAttribute("time2", $row['TimeTWO']); 
    $newnode->setAttribute("time3", $row['TimeTHREE']); 

} 

echo $dom->saveXML(); 

?> 

나를 도와 나를 내가 잘못 뭘하는지 알려 주시기 바랍니다.

+0

자바 **는 자바 스크립트가 아닌 자바 스크립트 ** –

+0

입니다. – Alex

+0

[이전 버전]과 다른 점 (http://stackoverflow.com/questions/23717046/googlemaps-reload-markers-based- 입력시)? – geocodezip

답변

0

var "Date"의 이름을 다른 것으로 변경해야했습니다.