基于今天日期的标记的动态样式

时间:2012-03-13 13:40:16

标签: javascript google-maps google-fusion-tables

我正在尝试确定是否可以根据与标记相关的日期是否与今天相匹配来更改图标

例如,我有一系列事件,我希望在谷歌地图上显示其位置(数据作为融合表加载)。我想展示所有这些活动,但我希望为那些与地图加载日期相匹配的活动设置一个不同的图标。

有谁知道有任何证明这一点的例子?我有一个很好的搜索,但找不到任何东西。

更新: 在研究其他东西之后我又回到了这个问题,但仍然无法让这个工作得很好。上面发布的代码很适合创建当前日期字符串,但我没有得到任何尝试使用此字符串/ var工作的查询。我认为我必须遗漏一些非常明显的东西,因为当我手动将一个日期输入到查询中时,一切都按预期工作。

我已粘贴下面的代码段...如果有人能指出可能出错的地方,我将不胜感激。

var d = new Date();
var mon = d.getMonth() + 1; 
var day = d.getDate(); 
var year = d.getFullYear();
var date_string = '';
 if(mon < 10){
     date_string += "0" + mon; }else{
     date_string += mon; } 
     date_string += '/'; if(day < 10){
     date_string += "0" + day; }else{
     date_string += day; }
  date_string += '/'; year -= 2000;
 date_string += year;
  alert(date_string); 

layer = new google.maps.FusionTablesLayer({
        query: {
            select: 'Latitude',
            from: '3xxxxxx'
        },
        styles: [{ markerOptions: { iconName: "measle_white" } },
         { where: "'Date' = 'date_string'", 
        markerOptions: { iconName: "wht_pushpin"} }, 
        {where: "'Date' <= '05/07/12'", 
        markerOptions: { iconName: "measle_white" } }]


    });

2 个答案:

答案 0 :(得分:2)

这绝对是可能的,但是你还没有表明你到目前为止尝试了什么。我不知道有任何例子,但有一些数据证明使用Fusion Tables的时间滑块可能值得搜索。

我最近回答了有关Fusion Tables datetime filters的问题。需要注意的是确保您的Fusion Table列被输入为datetime,并确保您的日期使用接受的日期时间格式。

这是一个可能完成您想要的代码片段。

var where_date = "where Date = '03/13/12'";
var ftOpts = {
  query: {
     select: location_col,
     from: current_table_id
  },
  styles: [ {
      where: where_date,
      markerOptions:{
          iconName: "small_green"
       },
    },
    {
      markerOptions:{
          iconName: "small_red"
       },
    }
 ]
};

curr_layer = new google.maps.FusionTablesLayer(ftOpts);

curr_layer.setMap(map);

答案 1 :(得分:0)

问题改变了,请参阅评论。但请注意,如果您只想要当前日期,&gt; =将适用于Fusion Table查询,即使=没有。

var d = new Date();
var mon = d.getMonth() + 1;
var day = d.getDate();
var year = d.getFullYear();

var date_string = '';
if(mon < 10){
    date_string += "0" + mon;
}else{
    date_string += mon;
}
date_string += '/';
if(day < 10){
    date_string += "0" + day;
}else{
    date_string += day;
}

date_string += '/';
year -= 2000;
date_string += year;

alert(date_string);

}