2017-08-28 6 views
-3

je passer des valeurs à la fonction addPolyline (accessoires) pour changer la valeur du chemin et la couleur dynamiqueComment changer la valeur d'un objet qui est une valeur dans un autre objet

var lineSymbol = { 
    path: 'M 0,-1 0,1', 
    strokeOpacity: 1, 
    scale: 4,   
    strokeWeight: 2, 
}; 



function addPolyline(props){  
    flightPath = new google.maps.Polyline({ 
     path: props.flightPath, 
     geodesic: true, 
     strokeColor: props.color, 
     strokeOpacity: 0, 
     icons: [{ 
      icon: lineSymbol, 
      offset: '0', 
      repeat: '20px' 
     }] 
    }); 
} 

addPolyline({ 
    flightPath: flightPlanCoordinates, 
    color: "#f9a61e" 
}); 

Mais comment puis-je modifier l'opacité qui est à l'intérieur de lineSymbol mais appelé dans addPolyline dans le cadre de la clé d'icône.

+0

Vous ne pouvez pas modifier lineSymbol avant l'initialisation de 'flightPath'? Quelque chose comme: 'lineSymbol.strokeOpacity = props.newOpacity'. –

+0

En supposant que vous pouvez avoir plusieurs icônes, vous devrez faire une boucle sur les icônes et fusionner/remplacer les objets – Rajesh

Répondre

1

il vous suffit d'initialiser la valeur lineSymbol en utilisant votre props pour passer la valeur requise

function addPolyline(props){ 
    lineSymbol.strokeOpacity = props.symbolOpacity; 
    flightPath = new google.maps.Polyline({ 
    ... 

ou, si vous ne voulez pas modifier le lineSymbol global

function addPolyline(props){ 
    var symbol = Object.assign({}, lineSymbol) 
    symbol.strokeOpacity = props.symbolOpacity; 
    flightPath = new google.maps.Polyline({ 
    ... 
    icons: [{ 
     icon: symbol, 

et invoquer avec

addPolyline({ 
    flightPath: flightPlanCoordinates, 
    color: "#f9a61e", 
    symbolOpacity: 0.8 
}); 
+0

Même maintenant seulement la couleur change, pas l'opacité –

+0

oops petite faute de frappe, corrigé. –

+0

Cela fonctionne, merci, donc je vais devoir assigner l'objet à l'objet externe, puis appeler la clé d'objet affectée –