x

Openlayers: Marker verschwinden nach Event


  1. Openlayers: Marker verschwinden nach Event · PeiD (Gast) · 25.03.2011 18:18 · [flux]

    Hallo,

    bin gerade dabei bestimmte Orte mittels Marker auf eine Karte darzustellen. Die einzelnen Marker sind anklickbar, wodurch ein Event ausgelöst wird. Durch das Auslösen wird der div-Bereich mit der ID: 'viewer' im Html-tag geändert und bestimmte Informationen zum Ort angezeigt. Dies alles funktioniert auch soweit wunderbar, jedoch kann ich den Marker nur einmal anklicken und beim darauf folgenden eventuellen zoomen wandert dann mein Marker zu lon/lat=0/0 🙁 .

    die vollständige Seite gibts hier: Click.

    Event-Methode:

    marker.events.register('click',␣lMarker,␣function(evt){
    var␣ll␣=␣evt.object.lonlat.transform(map.getProjectionObject(),␣new␣OpenLayers.Projection("EPSG:4326"));
    for␣each␣(var␣item␣in␣hochschule){
    //if␣(ll.lon==item.lon␣&&␣ll.lat==item.lat){
    if␣(Math.abs(ll.lon-item.lon)␣<␣0.00001␣&&␣Math.abs(ll.lat-item.lat)␣<␣0.00001){
    document.getElementById("viewer").innerHTML␣=
    '<a␣href="'+item.web+'"␣target="_blank"␣>'+item.uni+'</a>'+'<br>'+item.str+'<br>'+item.plz;
    }
    }
    OpenLayers.Event.stop(evt);
    });
    

    bin momentan ratlos wie ich diesen versetzen entgegenwirken könnte. Hat wer vlt. hierfür eine Erklärung oder einen Rat?

    MfG PeiD


    • Re: Openlayers: Marker verschwinden nach Event · mylama (Gast) · 25.03.2011 22:53 · [flux]

      Hi,

      so auf verdacht würde ich mal die Zeile:
      OpenLayers.Event.stop(evt);

      testweise entfernen, da hier das click-event verloren gehen müsste.
      das würde dann auch noch dein lon,lat 0 erklären.


    • Re: Openlayers: Marker verschwinden nach Event · PeiD (Gast) · 26.03.2011 09:05 · [flux]

      Hy,

      danke für Tipp. hab ich auch gleich ausprobiert 😄 (siehe hier). aber leider keinerlei Veränderung zum vorhergehenden verhalten. :'(


    • Re: Openlayers: Marker verschwinden nach Event · mylama (Gast) · 26.03.2011 11:38 · [flux]

      Ich würde dies er dynamisch laden, da du so nur ca. 60 POI's darstellen solltest.(performance)
      Wenn du aber mehr haben möchtest, solltest du dir mal quältext ; ) reinziehen.
      Link
      oder Openlayer - Dynamic text layer


    • Re: Openlayers: Marker verschwinden nach Event · mylama (Gast) · 26.03.2011 11:45 · [flux]

      Habe da mal grob was gebastelt(ungetestet):

      <html><body␣onload="init()">
      <script␣src="http://www.openlayers.org/api/OpenLayers.js"></script>
      <script>
      function␣destroyoutput(feature){
      //document.getElementById("viewer").innerHTML␣=␣'';
      }
      
      function␣createoutput(feature){
      //document.getElementById("viewer").innerHTML␣=␣'<a␣href="'+feature.attributes.title+'"␣target="_blank"␣>'+feature.attributes.description+'</a>'+'<br>'+feature.attributes.str+'<br>'+feature.attributes.plz;
      }
      
      function␣init(){
      var␣lon␣=␣10.44768;
      var␣lat␣=␣51.163375;
      var␣zoom␣=␣5;
      var␣feature;
      map␣=␣new␣OpenLayers.Map("map");
      map.addLayer(new␣OpenLayers.Layer.OSM());
      
      //Set␣start␣centrepoint␣and␣zoom
      var␣lonLat␣=␣new␣OpenLayers.LonLat(␣lon,␣lat)
      .transform(
      new␣OpenLayers.Projection("EPSG:4326"),␣//␣transform␣from␣WGS␣1984
      map.getProjectionObject()␣//␣to␣Spherical␣Mercator␣Projection
      );
      
      var␣pois=new␣OpenLayers.Layer.Vector("POI",␣{strategies:␣[new␣OpenLayers.Strategy.BBOX({resFactor:␣1.1})],protocol:␣new␣OpenLayers.Protocol.HTTP({url:␣"poi.txt",format:␣new␣OpenLayers.Format.Text()})});
      
      selcontrol=new␣OpenLayers.Control.SelectFeature(pois,{onSelect:␣createoutput,onUnselect:␣createoutput});
      map.addControl(selcontrol);
      selcontrol.activate();
      map.addLayer(pois);
      map.setCenter␣(lonLat,␣zoom);
      }
      </script>
      <div␣id="map">map</div><!--␣map␣-->
      <div␣id="viewer">viewer</div><!--␣viewer␣-->
      </body></html>
      

      So in etwa, dein Array wird dann die Textdatei:

      lat␣␣␣␣lon␣␣␣␣title␣␣␣␣description␣␣␣␣␣icon
      49.4819200␣␣␣␣10.9830100␣␣␣␣text␣␣␣␣Beschreibung␣␣␣␣http://wiki.openstreetmap.org/w/images/e/e7/Ol_icon_blue_example.png
      49.477078␣␣␣␣10.990049␣␣␣␣text␣␣␣␣Beschriebung2␣␣␣␣http://wiki.openstreetmap.org/w/images/e/e7/Ol_icon_blue_example.png
      

      Wichtig ist hier die Tab-trennung und am Schluss Return


    • Re: Openlayers: Marker verschwinden nach Event · PeiD (Gast) · 27.03.2011 13:24 · [flux]

      Vielen Dank soweit, hab dein Code jedoch leider nicht zum laufen bekommen 😉
      konnte aber mittlerweile mein Problem lösen.

      sehr aufschlussreich war hierbei folgendes Beispiel: http://dev.openlayers.org/releases/Open … layer.html

      MfG PeiD


    • Re: Openlayers: Marker verschwinden nach Event · mylama (Gast) · 28.03.2011 17:33 · [flux]

      Hi PeiD,

      also bei mir geht es immer noch nicht? (Firefox 4)
      Dein Beispiel kannte ich bis jetzt noch nicht : ), ist eig. das was ich dir gezeigt habe (OpenLayers.Layer.Vector, SelectFeature).

      Nachteil ist halt hier, dass deine Pins nicht dynamisch geladen werden.
      Aber wenn du nicht mehr hast, ist das völlig ausreichend : ).

      VG