ol getFeatureByAttribute display: 'none'

Hallo Leute! Hallo Max!

Ich habe ein Problem mit dem Ausblenden/ Einblenden von Markern durch selektieren des Features über ein Attribut.

Meine 1.te Lösung und das Problem:

Mit jquery erzeuge ich folgende Funktion.

$(function(){($(‘[title = Achtrup]’).hide();});

Klappt super. Aber!! Der Marker wird beim Zoomen wieder sichtbar.

Meine 2.te Lösung, die gar nicht funktioniert:

function() { var markerselected = map.getFeaturesByAttribute(‘title’,‘Achtrup’};

             markerselected[0].style = {display:'none'};

             map.markerlayer.redraw();  };

Kann mir jemand weiterhelfen?

P.S. Hallo Max. Wenn ich ein Attribute, wie von Dir beschrieben erzeuge, funktioniert schon erste Lösung nicht.

Gruss

Stefan

Hallo, mir fehlen in deiner Frage so ein paar infos, aber vlt kommst du mit folgendem weiter…

marker.display(false);

http://gis.stackexchange.com/questions/16813/how-to-modify-a-marker-objects-icon-after-its-been-drawn
http://dev.openlayers.org/docs/files/OpenLayers/Marker-js.html
http://stackoverflow.com/questions/6528243/how-to-hide-vector-features-in-openlayers

Hi,

also mir fehlen auch ein paar Infos, vielleicht liegts daran, dass ich jquery nicht kenne.

Sind wir hier bei der Fortsetzung von “openlayers2 id für Marker vergeben”? Da hätte ich ein Beispiel, wie man Marker mit selbstgemachter ID ein- und ausblendet. Für was ernsthaftes würde ich mir aber irgendein Austauschformat zwischen Datenbank und Webseite aussuchen, geojson oder kml oder so. Dann ist der Quelltext nicht voller Punktdefinitionen und wenns mal viele Punkte sind, kann man auch nur die laden, die man braucht.

Grüße, Max

Hi Max!!

Hab es ganz verpennt mich bei Dir zu bedanken!! Deine Hilfe war echt super! Hab die Funktion mal unten aufgeführt. Das $(document).on(‘click’, … }); ist wegen einer Sortiermöglichkeit über eine Ajax DB-Abfrage notwendig. $(document).ready(function() {…}); funktioniert nicht, wenn die Tabelle in den DOM neu eingefügt wird. Beim Sortieren mit jQuery bleibt bei langen Tabellen das Script hängen. Das ist vielleicht ein kleiner Hinweis von meiner Seite und und im Zusammenhang mit Ajax wichtig zu wissen.

$(document).on(‘click’, ‘.anausbild1, .anausbild2’, function(){

var markerid0 = ($(this).attr(“id”));

var meinmarkerid = markerid0.substr(3,8);

var richtig = new Boolean(true);
var anauscss = $(this).hasClass(“anausbild1”);

$(this).toggleClass(“anausbild1”);
$(this).toggleClass(“anausbild2”);

	for (var i = 0; i < vL_rot1.features.length; i++){
					if(vL_rot1.features(i).data.myid== meinmarkerid){
					if(vL_rot1.features(i).style.display=='true'){vL_rot1.features(i).style.display='none'}
					else {vL_rot1.features(i).style.display='true'}
					if(vL_rot1.features(i).popup){
					vL_rot1.features(i).popup.destroy();
					vL_rot1.features(i).popup=null;}
					}};
								
	for (var i = 0; i < vL_gruen1.features.length; i++){
					if(vL_gruen1.features(i).data.myid== meinmarkerid){
					if(vL_gruen1.features(i).style.display=='true'){vL_gruen1.features(i).style.display='none'}
					else {vL_gruen1.features(i).style.display='true'}
					if(vL_gruen1.features(i).popup){
					vL_gruen1.features(i).popup.destroy();
					vL_gruen1.features(i).popup=null;}
					}};
								
	for (var i = 0; i < vL_gelb1.features.length; i++){
					if(vL_gelb1.features(i).data.myid== meinmarkerid){
					if(vL_gelb1.features(i).style.display=='true'){vL_gelb1.features(i).style.display='none'}
					else {vL_gelb1.features(i).style.display='true'}
					if(vL_gelb1.features(i).popup){
					vL_gelb1.features(i).popup.destroy();
					vL_gelb1.features(i).popup=null;}
					}};
								
	for (var i = 0; i < vL_rot2.features.length; i++){
					if(vL_rot2.features(i).data.myid== meinmarkerid){
					if(vL_rot2.features(i).style.display=='true'){vL_rot2.features(i).style.display='none'}
					else {vL_rot2.features(i).style.display='true'}
					if(vL_rot2.features(i).popup){
					vL_rot2.features(i).popup.destroy();
					vL_rot2.features(i).popup=null;}
					}};
								
	for (var i = 0; i < vL_gruen2.features.length; i++){
					if(vL_gruen2.features(i).data.myid== meinmarkerid){
					
					if(vL_gruen2.features(i).style.display=='true'){vL_gruen2.features(i).style.display='none'}
					else {vL_gruen2.features(i).style.display='true'}
					if(vL_gruen2.features(i).popup){
					vL_gruen2.features(i).popup.destroy();
					vL_gruen2.features(i).popup=null;}
					}};
								
	for (var i = 0; i < vL_gelb2.features.length; i++){
					if(vL_gelb2.features(i).data.myid== meinmarkerid){
					if(vL_gelb2.features(i).style.display=='true'){vL_gelb2.features(i).style.display='none'}
					else {vL_gelb2.features(i).style.display='true'}
					if(vL_gelb2.features(i).popup){
					vL_gelb2.features(i).popup.destroy();
					vL_gelb2.features(i).popup=null;}
					}};
								
if (anauscss == richtig){
							
					for (var i = 0; i < vL_rot1name.features.length; i++){
					if(vL_rot1name.features(i).data.myid== meinmarkerid){vL_rot1name.features(i).style = { display: 'none' };}
					}
								
					for (var i = 0; i < vL_gelb1name.features.length; i++){
					if(vL_gelb1name.features(i).data.myid== meinmarkerid){vL_gelb1name.features(i).style = { display: 'none' };}
					}
								
					for (var i = 0; i < vL_gruen1name.features.length; i++){
					if(vL_gruen1name.features(i).data.myid== meinmarkerid){vL_gruen1name.features(i).style = { display: 'none' };}
					}
								
					for (var i = 0; i < vL_rot2name.features.length; i++){
					if(vL_rot2name.features(i).data.myid== meinmarkerid){vL_rot2name.features(i).style = { display: 'none' };}
					}
								
					for (var i = 0; i < vL_gelb2name.features.length; i++){
					if(vL_gelb2name.features(i).data.myid== meinmarkerid){vL_gelb2name.features(i).style = { display: 'none' };}
					}
								
					for (var i = 0; i < vL_gruen2name.features.length; i++){
					if(vL_gruen2name.features(i).data.myid== meinmarkerid){vL_gruen2name.features(i).style = { display: 'none' };}
					}

					}
								
else {
								
					for (var i = 0; i < vL_rot1name.features.length; i++){
					if(vL_rot1name.features(i).data.myid== meinmarkerid){vL_rot1name.features(i).style = null;}
					}
								
					for (var i = 0; i < vL_gelb1name.features.length; i++){
					if(vL_gelb1name.features(i).data.myid== meinmarkerid){vL_gelb1name.features(i).style = null;}
					}
								
					for (var i = 0; i < vL_gruen1name.features.length; i++){
					if(vL_gruen1name.features(i).data.myid== meinmarkerid){vL_gruen1name.features(i).style = null;}
					}
								
					for (var i = 0; i < vL_rot2name.features.length; i++){
					if(vL_rot2name.features(i).data.myid== meinmarkerid){vL_rot2name.features(i).style = null;}
					}
								
					for (var i = 0; i < vL_gelb2name.features.length; i++){
					if(vL_gelb2name.features(i).data.myid== meinmarkerid){vL_gelb2name.features(i).style = null;}
					}
								
					for (var i = 0; i < vL_gruen2name.features.length; i++){
					if(vL_gruen2name.features(i).data.myid== meinmarkerid){vL_gruen2name.features(i).style = null;}
					}
								
	}

								vL_rot1.redraw(); vL_rot1name.redraw();
								vL_gelb1.redraw(); vL_gelb1name.redraw();
								vL_gruen1.redraw(); vL_gruen1name.redraw();
								vL_rot2.redraw(); vL_rot2name.redraw();
								vL_gelb2.redraw(); vL_gelb2name.redraw();
								vL_gruen2.redraw(); vL_gruen2name.redraw();

});

Ansonsten kann ich Dir jQuery nur sehr empfehlen. Es erleichtert die Arbeit mit js enorm! Die eckigen Klammern mußte ich im Beitrag in runde Klammern ändern.

Schönes Ostern Stefan