2012-03-15 7 views
1

私は、mysqlからデータを取得するプロジェクトマップを作成しています。私のDBには、 "0または1"の値を持つ "weekends"という列があります。 "1"の値は、曜日または時刻に関係なくマーカーを表示することを意味します。Google Maps API v3。日時に応じて地図上にマーカーを隠す方法は?

他のすべてのマーカーについては、たとえば非表示にする必要があります。金曜日の午後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() {} 
+0

(他の多くの方法があるかもしれません)このように見えるかもしれデータベースは通常、日付と時刻を知っている、なぜあなたがDBから必要なだけのマーカーをフェッチしませんか? –

+0

私はそれをどのようにクエリしますか?そのmysql DBです。 – user1221373

+0

私はバックエンドに行くのではなくデータ表示を切り替えたいユースケースがあるので、この質問に答えたいと思っています。 – samspot

答えて

0

コメントに、それはDBからのみ必要なマーカーを取得するために最善をだろうについて:

は、ここに私のコードです。

クエリが

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) 
     ) 
+0

私はクエリを変更した場合、私はjavascriptを修正する必要はありません、私は正しいですか? – user1221373

+0

はい、クエリは、現在のサーバー時間が指定された範囲(friday 9 pm-sunday 9pm)内にない場合、週末が1に設定された行またはすべての行のみを返します。 –

+0

ありがとうございました!私はこれを試してみましょう。 – user1221373

関連する問題