2017-06-13 116 views
2

我在地图上有标记。我在JSON中设置依赖于日期的标记的不透明度。单击信息窗口内的按钮后更改Google地图标记属性

因为这个时候地图加载,一些标记是0.5不透明度,有些是1不透明度。

标记的信息窗口中有一个按钮。当我点击这个按钮时,我想将不透明度更改为1.

下面是我的代码片段,以向您展示如何在此刻设置它。

任何帮助,将不胜感激


//For every item in JSON 
$.each(dbJSON, function(key, data) { 

    var opacity = 1; 
    var today = new Date(); 
    var fadeDate = new Date(data.last_rated); //get the date last rated     
    fadeDate.setDate(fadeDate.getDate() + 1); //and add 1 date to it to specify the day when the icon should fade 

    if(Date.parse(today) > Date.parse(fadeDate)) { 
     console.log('fade'); 
     opacity = 0.5; 
    } else { 
     console.log('show'); 
     opacity = 1; 
    } 

    var postal_town = data.location; 
    geocoder.geocode({ 'address': postal_town}, function(results, status) { 
     //... 
     console.log(opacity); 

     var marker = new google.maps.Marker({ 
      map: map, 
      position: results[0].geometry.location, 
      title: data.manufacturer_name, 
      icon: image, 
      rating: data.rating, 
      opacity: opacity 
     }); 

     markers[data.id] = marker; 

     marker.addListener('click', function() { 

      var contentString = '<div id="content">'+ 
       '<h1>' + data.manufacturer_name + '</h1>' + 
       '<button id="seen-it" data-rating="' + data.rating + '" data-entry-id="' + data.id + '">Seen it</button>' + 
       '<p><strong>Rating: </strong><span id="rating">' + markers[data.id].rating + '</span></p>' + 
       '</div>'; 

      infowindow.setContent(contentString); 
      infowindow.open(map, marker); 
     }); 
    }); 
}); 

//Do something when the #seen-it button is clicked 
$(document).on('click', '#seen-it', function(event){ 
    //... 
}); 

回答

1

既然你存储在data-entry-id您可以使用标记的ID(假设markers变量是从访问你的手柄

$(document).on('click', '#seen-it', function(event){ 
    var markerId = $(this).data('entry-id'); 
    markers[markerId].setOpacity(1); 
}); 
+0

这工作,我不完全确定为什么! :)谢谢 –

+0

@OliverEvans让我知道哪个部分让你感到困惑,我会尽力解释。 –

+0

没关系,我明白了。我以为你正在改变对象上的不透明度值,并错过了你使用setOpacity方法。谢谢 –

相关问题