2017-06-13 1 views
2

Ich habe Markierungen auf einer Karte. Ich setze die Deckkraft des Markers abhängig vom Datum in JSON.Ändern der Google Maps Marker-Eigenschaft nach dem Klicken auf die Schaltfläche im Infofenster

Aus diesem Grund, wenn die Karte geladen wird, sind einige der Marker 0,5 Opazität, einige sind 1 Opazität.

Im Infofenster des Markers befindet sich eine Schaltfläche. Wenn ich auf diese Schaltfläche klicke, möchte ich die Deckkraft auf 1 setzen.

Unten finden Sie einige Code-Schnipsel, um Ihnen zu zeigen, wie ich es im Moment eingerichtet habe.

Jede Hilfe wäre viel


//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){ 
    //... 
}); 

Antwort

1

Da Sie die ID des in der data-entry-id Sie könnten aus (vorausgesetzt, die markers Variable zugänglich verwenden gespeichert Marker haben erkannt werden, Ihr Handler)

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

Das funktioniert und ich bin mir nicht ganz sicher, warum! :) Vielen Dank –

+0

@OliverEvans lassen Sie mich wissen, welcher Teil verwirrt Sie und ich werde versuchen zu erklären. –

+0

Vergiss es, ich verstehe es. Ich dachte, du änderst den Deckkraftwert für das Objekt und verpasst, dass du die setOpacity-Methode verwendest. Danke –

Verwandte Themen