我有一個呈現標記的Google Map,並且我在標記內構建的陣列之一是arrTimeStamp這將捕獲一個0-24的整數,表示用戶登錄的小時數。滑塊顯示0 - currentHour(當前時間四捨五入到小時)。我想要做的是根據相對於滑塊值的時間標記隱藏/顯示標記。滑塊隱藏/顯示Google地圖標記
例如,如果我在下午2點登錄了10個標記,然後在下午3點登錄了5個標記。當滑塊在下午3點時,我應該在地圖上看到所有15個標記,但是如果將滑塊滑動到下午2點,它應該隱藏標記爲3點的5個標記,因此只顯示10 2pm標記。如果我將滑塊滑回到下午3點,我會再次看到所有15個。
我試圖使用.setMap(null).setMap(map)作爲我的隱藏和顯示,但是這會在.setMap上返回一個未定義的錯誤。如果我只使用.setMap(null),如果工作正常並隱藏它們,但這是一條單向街道,因爲我無法在沒有.setMap(地圖)的情況下再次顯示它們。在這方面我見過幾篇關於.setMap的問題,但我還沒有找到解決方案。任何幫助,將不勝感激。謝謝。
var d = new Date();
var currentHour = d.getHours()+1;
$("#slider").slider({
value: currentHour,
min: 0,
max: currentHour,
step: 1,
slide: function(event, ui) {
$("#amount").val(ui.value);
var time = parseInt($('#amount').val());
for(x = 0; x <= arrMarkers.length; x++){
arrMarkers[x].setMap((arrTimeStamp[x] >= (currentHour - time)) ? null : map);
}
}
});
這裏是我的地圖和滑塊所有代碼。
<script type="text/javascript">
var map;
var arrMarkers = [];
var arrInfoWindows = [];
var arrTimeStamp = [];
var timeStamp = 0;
var marker = 0;
var numLocations = 0;
function mapInit()
{
var centerCoord = new google.maps.LatLng(40, -100); // USA
var mapOptions = {
zoom: 5,
center: centerCoord,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map"), mapOptions);
var d = new Date();
var currentHour = d.getHours()+1;
$.getJSON("http://www.URL.com/superadmin/json/map-data.cfc?method=getFeedData&feedType=location×pan=" + currentHour, {}, function(data)
{
$.each(data.DATA, function(i, item)
{
numLocations++;
$('#locationsOnline').html(numLocations);
// displays proper image for marker
function markerinformation()
{
var markerImage = 'http://www.URL.com/css/images/map_property_green_pin.png';
return markerImage;
}
markerTitle = item.LOCATIONNAME
// creates the markers
var marker = new google.maps.Marker(
{
position: new google.maps.LatLng(item.LOCATIONLATITUDE, item.LOCATIONLONGITUDE),
map: map,
title: markerTitle,
icon: markerinformation()
});
arrMarkers[i] = marker;
// infowindow content
var infowindow = new google.maps.InfoWindow(
{
content: "<p><b>Location:</b> " + item.LOCATIONNAME + "</p><p><b>Customer:</b> " + item.CUSTOMERNAME + "</p><p>" + item.LOCATIONCITY + ", " + item.LOCATIONSTATE + "</p>"
});
arrInfoWindows[i] = infowindow;
// "live" bind click event
google.maps.event.addListener(marker, 'click', function()
{
// this closes all open infowindows before opening the selected one
for(x = 0; x < arrInfoWindows.length; x++)
{
arrInfoWindows[x].close();
}
infowindow.open(map, marker); // open the clicked marker infowindow
});
arrTimeStamp[i] = item.TIMESTAMP;
});
});
}
$(function() {
mapInit(); // initialize map (create markers, infowindows, and list)
var d = new Date();
var currentHour = d.getHours()+1;
$("#slider").slider({
value: currentHour,
min: 0,
max: currentHour,
step: 1,
slide: function(event, ui) {
$("#amount").val(ui.value);
var time = parseInt($('#amount').val());
for(x = 0; x <= arrMarkers.length; x++){
arrMarkers[x].setMap((arrTimeStamp[x] >= (currentHour - time)) ? null : map);
}
}
});
});
</script>
您確定地圖可以在全局定義的函數/地圖內部訪問嗎? –
我繼續並粘貼了所有地圖代碼以供參考。 –
需要什麼外部JavaScript文件?什麼HTML/CSS? – geocodezip