Google Maps API v3. Как скрыть маркеры на карте в зависимости от дня и времени? - PullRequest
1 голос
/ 15 марта 2012

Хорошо, у меня есть карта проекта, над которой я работаю, которая извлекает данные из mysql.в моей БД у меня есть столбец «выходные» со значением «0 или 1». Значение «1» будет означать отображение маркера независимо от дня или времени недели.

Длявсе остальные маркеры, которые мне нужны, например, чтобы скрыть их;с пятницы 9 вечера до воскресенья 9 вечера.Если у них нет значения «1» в столбце выходных, они будут отображаться.

Может кто-нибудь помочь мне сконструировать эту функцию сценария Java?Любая помощь будет высоко ценится.

вот мой код:

//Icon Selection
    var customIcons = {
      Full: {
        icon: 'red.png'

      },
      Partial: {
        icon: 'blue.png',

      }

    };


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


  // Change this depending on the name of your PHP file
  downloadUrl("phpsqlajax_genxml2.php", function(data) {
    var xml = data.responseXML;
    var markers = xml.documentElement.getElementsByTagName("marker");
    for (var i = 0; i < markers.length; i++) {
      var Udf_DSCategory = markers[i].getAttribute("Udf_DSCategory");
      var Description = markers[i].getAttribute("Description");
      var Udf_DSLimitsTo = markers[i].getAttribute("Udf_DSLimitsTo");
      var Udf_DSType = markers[i].getAttribute("Udf_DSType");
      var Udf_DSPIONotes = markers[i].getAttribute("Udf_DSPIONotes");
      var Udf_DSApprovedBy = markers[i].getAttribute("Udf_DSApprovedBy");
    var Udf_DSLimitsOfClosure = markers[i].getAttribute("Udf_DSLimitsOfClosure");
    var ProjectName = markers[i].getAttribute("ProjectName");
    var Udf_DSDateClosureFrom = markers[i].getAttribute("Udf_DSDateClosureFrom");   
    var Udf_DSDateClosureTo = markers[i].getAttribute("Udf_DSDateClosureTo");
    var weekend = markers[i].getAttribute("weekend");               
    var point = new google.maps.LatLng(
          parseFloat(markers[i].getAttribute("UserText1")),
          parseFloat(markers[i].getAttribute("BulletinID")));

      var html = 

     "<b> Project Name: </b> " + ProjectName +  "<br/>" +"<b> Category: </b> " + Udf_DSCategory + " <br/>" + "<b> Closure Type: </b>" + Udf_DSType + "  <br/> <b> Date From: </b> " + Udf_DSDateClosureFrom + " <b>to</b> " + Udf_DSDateClosureTo + " <br/>" + "<b> Road: </b>" + Description + "<br/>" + "<b> Closure Notes: </b>" + Udf_DSPIONotes + "<br/>" + "<b> Closure Approved by: </b>" + Udf_DSApprovedBy ;


      var icon = customIcons[Udf_DSType] || {};
      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() {}

1 Ответ

0 голосов
/ 16 марта 2012

Что касается комментария, то было бы лучше выбрать только необходимые маркеры из БД.

Запрос может выглядеть следующим образом (может быть много других способов)

SELECT * FROM `yourTable` 
   WHERE( weekends=1 
            OR
          WEEKDAY(NOW())<4 
            OR 
          (WEEKDAY(NOW())=4 AND HOUR(NOW())<18)
            OR 
          (WEEKDAY(NOW())=6 AND HOUR(NOW())>17)
        )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...