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

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?

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

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

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

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

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.

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

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 :slight_smile:

// 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) {…