2016-05-12 11 views
0

Ich möchte nur versuchen, Informationen über die wms Schicht über die Schichten, die Details Openlayers 3,14WMSLayer.getSource() Ist keine Funktion?

map.on('singleclick', function(evt) { 
    var url = layers.getSource().getGetFeatureInfoUrl(
     evt.coordinate, viewResolution, viewProjection, 
     {'INFO_FORMAT': 'text/javascript', 
     'propertyName': 'formal_en'}); 
    if (url) { 
    var parser = new ol.format.GeoJSON(); 
    $.ajax({ 
     url: url, 
     dataType: 'jsonp', 
     jsonpCallback: 'parseResponse' 
    }).then(function(response) { 
     var result = parser.readFeatures(response); 
     if (result.length) { 
     var info = []; 
     for (var i = 0, ii = result.length; i < ii; ++i) { 
      info.push(result[i].get('formal_en')); 
     } 
     container.innerHTML = info.join(', '); 
     } else { 
     container.innerHTML = '&nbsp;'; 
     } 
    }); 
    } 
}); 
+0

bekommen wo Schichten definiert? – bartvde

Antwort

0

layers ist wahrscheinlich eine Reihe von ol.layer oder es kann nicht einmal verfügbar sein in der Funktion des Umfang verwenden.

In beiden Fällen müssen Sie eine einzelne Schicht verwenden, um .getGetFeatureInfoUrl() gegen zu verwenden.

Also entweder so etwas wie:

layers[0].getSource().getGetFeature.... 

oder wenn Schichten nicht verfügbar Sie es aus dem Kartenobjekt mit .getLayers()

map.getLayers().forEach(function(layer) { 
    // optionally check that the layer is the one you want. 
    if (layer.getProperties().ref === 'myLayer'){ 
     layer.getSource().getGetFeature.... 
    } 
}