x

WMS und GeoRSS auf mobilen Geräten funtionieren nicht wie gewünscht.


  1. WMS und GeoRSS auf mobilen Geräten funtionieren nicht wie gewünscht. · aj1 (Gast) · 27.11.2013 11:31 · [flux]

    Hallo!

    Ich habe auf einer Karte (OpenStreetMap) einen Punktlayer (GeoRSS).
    Die Punkte werden durch Marker dargestellt, bei cklick öffnet sich ein Popup mit weiteren Informationen.
    Weiters einen Linienlayer (WMS), bei click auf die Linie öffnet sich ein Fenster mit weiteren Informationen.
    Funktioniert auf PC's wunderbar.
    Testet man jedoch diese Karte mit mobilen Geräten (Andriod Tablets, Android Smartphones oder IPad) wird die Karte wie gewünscht angezeigt, jedoch passiert per touch auf die Marker bzw. auf die Linie nichts mehr.
    Auch das anschließen einer Maus am Android Tablet brachte Nichts.

    Kann mir jemand weiterhelfen?


    • Re: WMS und GeoRSS auf mobilen Geräten funtionieren nicht wie gewünscht. · SammysHP (Gast) · 27.11.2013 12:11 · [flux]

      aj1 wrote:

      Kann mir jemand weiterhelfen?

      Nein, weil du uns nicht sagst, wie du es machst. Den Code (und idealerweise eine URL zum Testen) müsstest du uns schon zeigen.


    • Re: WMS und GeoRSS auf mobilen Geräten funtionieren nicht wie gewünscht. · aj1 (Gast) · 27.11.2013 13:10 · [flux]

      Vielen Dank für das Interesse.

      Die Karte soll eine Orientierungshilfe für die freiwillige Feuerwehr werden.
      Die Daten und der Webspace wird uns von einer Firma kostenfrei zur Verfügung gestellt.
      Leider könnt Ihr die wms-Layer nicht einblenden, da der PostGis-Server eine Authentivizierung erfordert.

      Hier der Code:

      <!DOCTYPE␣html>
      <html␣>
      <head>
      <title>test</title>
      <style␣type="text/css">
      html,␣body,␣#map1␣{
      width:␣100%;
      height:␣100%;
      margin:␣0;
      }
      div.auswahl{font-family:Arial,␣Helvetica,␣sans-serif;␣font-size:24px}
      </style>
      <script␣type="text/javascript"␣src="http://www.gis4you.at/georss/OpenLayers/OpenLayers.js"></script>
      <script␣type="text/javascript">
      
      var␣map_1;
      
      var␣fromProjection␣=␣new␣OpenLayers.Projection("EPSG:4326");
      var␣toProjection␣=␣new␣OpenLayers.Projection("EPSG:900913");
      var␣bbox␣=␣new␣OpenLayers.Bounds(14.60,␣46.67,␣14.80,␣46.80).transform(fromProjection,␣toProjection);
      var␣lonLat␣=␣new␣OpenLayers.LonLat(14.75,␣46.72).transform(fromProjection,␣toProjection);
      
      var␣zoom=13;
      var␣auswahl="Haltung";
      var␣db␣=␣"awv_geo-line.map";
      
      function␣init()␣{
      
      map_1␣=␣new␣OpenLayers.Map(
      'map1',
      {
      allOverlays:␣true,
      projection␣:␣'EPSG:4326',
      displayProjection␣:␣'EPSG:4326',
      maxExtent:␣bbox,
      restrictedExtent:␣bbox,
      center:␣lonLat
      }
      );
      
      var␣mapnik␣=␣new␣OpenLayers.Layer.OSM();//Openstreetmap
      
      var␣size␣=␣new␣OpenLayers.Size(31,50);
      var␣offset␣=␣new␣OpenLayers.Pixel(-(size.w/2),␣-size.h);
      var␣Mymarker␣=␣new␣OpenLayers.Icon("http://www.gis4you.at/geoRSS/marker/markerblue.png",␣size,␣offset);
      var␣georss␣=␣new␣OpenLayers.Layer.GeoRSS("GeoRSS",␣"http://www.gis4you.at/georss/hydranten_rss20.xml",␣{'icon':Mymarker});
      
      //***␣Wasser␣***
      var␣wasser␣=␣new␣OpenLayers.Layer.WMS(
      'Wasser',
      'http://www.gis4you.at/cgi-bin/mapserv.exe',
      {
      map:␣'/ms4w/Apache/htdocs/maps/awv_geo-line.map',
      layers:␣'Einbauten,'␣+␣'Hydrant,'␣+␣'Sonstige␣Bauwerke,'␣+␣'Speicher,'␣+␣'Bauwerke␣Flaechen,'␣+␣'Leitung',␣format:␣'image/png',␣transparent:␣"true",
      },
      {
      singleTile:␣true,
      isBaseLayer:␣false,
      visibility:␣false
      }
      );
      
      //***␣Kanal␣***
      var␣kanal␣=␣new␣OpenLayers.Layer.WMS(
      'Kanal',
      'http://www.gis4you.at/cgi-bin/mapserv.exe',
      {
      map:␣'/ms4w/Apache/htdocs/maps/awv_geo-line.map',
      layers:␣'Schacht,'␣+␣'Haltung,'␣+␣'Hausanschluss,'␣+␣'Fliessrichtung,'␣+␣'Sonderbauwerk',␣format:␣'image/png',␣transparent:␣"true",
      },
      {
      singleTile:␣true,
      isBaseLayer:␣false,
      visibility:␣false
      }
      );
      
      map_1.addLayers([mapnik,␣wasser,␣kanal,␣georss]);
      map_1.addControl(␣new␣OpenLayers.Control.MousePosition()␣);
      map_1.addControl(␣new␣OpenLayers.Control.LayerSwitcher()␣);
      map_1.addControl(␣new␣OpenLayers.Control.ScaleLine()␣);
      map_1.addControl(new␣OpenLayers.Control.KeyboardDefaults()␣);
      
      map_1.setCenter␣(lonLat,␣zoom);
      
      //␣Tie␣click␣event␣to␣WMS␣GetFeatureInfo␣call
      map_1.events.register('click',␣map_1,␣function␣(e)␣{
      var␣aufruf␣=␣"http://www.gis4you.at/cgi-bin/mapserv.exe?map=/ms4w/Apache/htdocs/maps/"+db
      +␣"&REQUEST=GetFeatureInfo"
      +␣"&BBOX="␣+␣map_1.getExtent().toBBOX()
      +␣"&X="␣+␣e.xy.x
      +␣"&Y="␣+␣e.xy.y
      +␣"&INFO_FORMAT=text/html"
      +␣"&QUERY_LAYERS="+auswahl
      +␣"&LAYERS="+auswahl
      +␣"&VERSION=1.1.1"
      +␣"&SRS=EPSG:900913"
      +␣"&WIDTH="␣+␣map_1.size.w
      +␣"&HEIGHT="␣+␣map_1.size.h;
      
      Haltung=window.open(aufruf,
      "Haltung",
      "location=0,status=0,toolbar=0,menubar=0,scrollbars=1,width=500,height=100,␣left=10,␣top=10"
      );
      Haltung.focus();
      });
      
      }␣//␣init
      
      function␣radioEvent(value)
      {␣//alert(value);
      switch␣(value)␣{
      case␣"Schacht":␣db="awv_geo-line.map";␣break;
      case␣"Haltung":␣db="awv_geo-line.map";␣break;
      }
      auswahl␣=␣value;
      }
      
      </script>
      </head>
      <body␣onload="init();">
      
      <div␣id="ausw"␣align="right"␣class="auswahl">
      
      <form>
      Aktiver␣Layer␣für␣Info:
      <input␣type="radio"␣name="Auswahlradio"␣value="Schacht"␣onclick="radioEvent(value);">␣Schacht␣&nbsp;
      <input␣type="radio"␣name="Auswahlradio"␣value="Haltung"␣onclick="radioEvent(value);"␣checked="checked">␣Haltung␣&nbsp;
      &nbsp;
      </form>
      
      </div>
      <div␣id="map1"></div>
      </body>
      </html>
      

      http://www.gis4you.at/geoRSS/test_wms_georss.html


    • Re: WMS und GeoRSS auf mobilen Geräten funtionieren nicht wie gewünscht. · gormo (Gast) · 27.11.2013 13:38 · [flux]

      Machst du das vielleicht mit einem CSS, das nur bei großen Monitoren erscheint?


    • Re: WMS und GeoRSS auf mobilen Geräten funtionieren nicht wie gewünscht. · aj1 (Gast) · 27.11.2013 13:41 · [flux]

      Verwende kein CSS.
      Die Karte wird korrekt dargestellt, lediglich die clicks funktionieren auf mobilen Geräten nicht.


    • Re: WMS und GeoRSS auf mobilen Geräten funtionieren nicht wie gewünscht. · wambacher (Gast) · 27.11.2013 15:02 · [flux]

      leicht OT: Wollt ihr die Sache draussen bei Einsätzen verwenden oder nur in der Zentrale (wegen der mobilen Geräte)?

      Das ist ja eine Online-Karte, die auch schon mal Offline sein kann. Ich würde dann soviel wie möglich auf das mobile Endgerät legen, angefangen bei OpenLayers.js, den Tiles der Umgebung bis zu den Hydranten und ähnliche relevante Daten.

      Gruss
      walter, bei dem es auch schon mal gebrannt hat.


    • Re: WMS und GeoRSS auf mobilen Geräten funtionieren nicht wie gewünscht. · aj1 (Gast) · 27.11.2013 15:44 · [flux]

      Hi,

      die Sache soll auch draussen bei Einsätzen bzw. auf der Fahrt zum Einsatzort in Verwendung sein.
      Das mit dem lokalen speichern der Daten ist sicher eine Überlegung Wert, vielen Dank für die Anregung Walter.
      Wir sind momentan noch in der ersten Testphase, mal sehen ob wir es hinbekommen.

      ciao,
      ALFi


    • Re: WMS und GeoRSS auf mobilen Geräten funtionieren nicht wie gewünscht. · aj1 (Gast) · 29.11.2013 08:17 · [flux]

      Hi,

      ich habe herausgefunden, daß die touch und click events am OL-Version 1.12 nicht mehr funktionieren.
      Bei äteren Versionen funktioniert click und touch, dafür verursacht zoom und pan Probleme.

      Ich habe einfach zwei event Listener eingebaut und es funktioniert 🙂

      // Touch click event to WMS GetFeatureInfo call
      map_1.events.register('touchend', map_1, function (e) {...

      // Desktop click event to WMS GetFeatureInfo call
      map_1.events.register('click', map_1, function (e) {...