2016-07-27 4 views
0

Ich versuche, das Etikett Farbe zu setzen, aber ich glaube nicht, setLabelColor() ist eine integrierte Funktion:Google Maps API setLabelColor

google.maps.event.addListener(marker, 'click', (function(marker, i) { 
    return function() { 
     infowindow.setContent(amenities[i][0]); 
     infowindow.open(map, marker); 
     for (j = 0; j < gmarkers.length; j++) { 
      gmarkers[j].setIcon(blackCircle); //resets default icon when another is clicked 
      gmarkers[j].setLabelColor('white'); 
     } 
     marker.setIcon(whiteCircle); //Sets clicked icon 
     marker.setLabelColor('black'); 
    } 
})(marker, i)); 

ich einen Fehler:

Uncaught TypeError: gmarkers[j].setLabelColor is not a function 

Ich weiß, SetLabel() ist eine Funktion, aber ich möchte nur die Farbe ändern, das Etikett selbst ist in Ordnung, wie es ist ?!

+0

Sind Sie sicher, dass 'gmarkers' diesen Marker hat? Ich glaube nicht, dass das Problem bei diesem Teil Ihres Codes liegt. –

+0

Ja, da bin ich mir sicher. Wenn ich sowohl 'gmarkers [j] .setLabelColor ('white');' und 'marker.setLabelColor ('black');' lines entferne, funktioniert der Code einwandfrei. – hrtestrt

+0

Können Sie eine Geige mit vollem Code erstellen? –

Antwort

0

Verwenden setLabel das Etikett zu einem MarkerLabel Objekt

zu verfolgen, das Etikett zu setzen, so dass Sie es gleich halten, ist eine Option, es in einer benutzerdefinierten Eigenschaft des Markers zu speichern (Beispiel unten verwendet ._labelText) .

marker = new google.maps.Marker({ 
    position: new google.maps.LatLng(amenities[i][1], amenities[i][2]), 
    map: map, 
    icon: blackCircle, //Sets default icon 
    zIndex: -100, 
    label: { 
    text: "" + amenities[i][3], 
    color: '#EDEBDD' 
    }, 
    _labelText: "" + amenities[i][3] 
}); 
gmarkers.push(marker); 
google.maps.event.addListener(marker, 'click', (function(marker, i) { 
    return function() { 
    infowindow.setContent(amenities[i][0]); 
    infowindow.open(map, marker); 
    for (j = 0; j < gmarkers.length; j++) { 
     gmarkers[j].setIcon(blackCircle); //resets default icon when another is clicked 
     gmarkers[j].setLabel({ 
     color: 'white', 
     text: gmarkers[j]._labelText 
     }); 
     gmarkers[j].setZIndex(-100); 
    } 
    this.setIcon(whiteCircle); //Sets clicked icon 
    this.setLabel({ 
     color: 'black', 
     text: this._labelText 
    }); 
    this.setZIndex(100); 
    } 
})(marker, i)); 

updated fiddle

+0

Vielen Dank für diese umgesetzt ich hier: https://jsfiddle.net/5aa9jtax/3/ Aber es vermasselt das Nummerierungssystem, wenn ein angeklickt wird? – hrtestrt

+0

Es wäre nützlicher für Sie gewesen, ein [minimales, vollständiges, getestetes und lesbares Beispiel] (http://stackoverflow.com/help/mcve) ** zu veröffentlichen, bevor ** Ihre Frage beantwortet wurde. Um das zu beheben, müssen Sie die Informationen über das Marker-Label verfügbar halten. – geocodezip