2013-09-04 4 views
0
내 응용 프로그램에서

googlemap 및 geoserver에서 오는 일부 WMS 레이어가 있는데,이 레이어의 기능을 선택해야합니다. 예를 들어 http://openlayers.org/dev/examples/getfeature-wfs.html을 클릭하면 기능을 클릭 할 때 오류가 발생하지 않습니다. 마우스는 스핀에 시작하지만 전혀 결과,이 내 코드입니다 : 내가없는 무언가가 있다고 생각openlayer select wms layer

var ghyb = new OpenLayers.Layer.Google(
     "Google Hybrid", 
     {"type": google.maps.MapTypeId.HYBRID, numZoomLevels: 20} 
    ); 
      var options = { 
      controls: [], 
      //sphericalMercator:true, 
      //projection: new OpenLayers.Projection('EPSG:900913'), // senza la proiezione mi stampa metà layer 
      units: "m", 
      numZoomLevels: 22,    
      maxResolution: 156543.0339, 
      maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34, 
         20037508.34, 20037508.34) 
      }; 
      var panZoom = new OpenLayers.Control.PanZoom(); 
     var map = new OpenLayers.Map('map', { 
       div: "gmap", 
       projection: "EPSG:900913", 
       displayProjection: "EPSG:4326", 
       //zoomOffset: 5 
     controls: [ 
      panZoom, 
      new OpenLayers.Control.Navigation() 
     ] 
     }); 
var regioni  = new OpenLayers.Layer.WMS(
      "regioni", 
      "http://localhost:8080/geoserver/wms", 
      { 
      layers: "metmi-italy:reg2011_g" , 
      transparent: "true", 
      format: "image/png", 
      srs:'EPSG:900913', // old: 'EPSG:2077' 
      //zoomOffset: 4, 
      }, 
      {isBaseLayer: false,} 
     ); 
control = new OpenLayers.Control.GetFeature({ 
     protocol: OpenLayers.Protocol.WFS.fromWMSLayer(regioni), 
     box: true, 
     hover: true, 
     multipleKey: "shiftKey", 
     toggleKey: "ctrlKey" 
     }); 
select = new OpenLayers.Layer.Vector("Selezioni", {styleMap: 
     new OpenLayers.Style(OpenLayers.Feature.Vector.style["select"]) 
     }); 
map.addLayers([ghyb,regioni,select]) 
control.events.register("featureunselected", this, function(e) { 
      removeFeaturesFromGrid(e.feature.fid); 
     select.removeFeatures([e.feature]); 

     }); 
control.events.register("featureselected", this, function(e) { 
       console.log('selected') 
       select.addFeatures([e.feature]); 
       //addFeaturesToGrid(e.feature);   
     }); 
map.addControl(control); 
control.activate() 

,하지만 난 그게

답변

0

내가 사용하지 않은 찾을 수 없습니다 GetFeature 클래스는이 경우 WMSGetFeatureInfo를 사용합니다.

var clickControl = new OpenLayers.Control.WMSGetFeatureInfo({ 
      url: 'http://localhost:8080/geoserver/wms', 
      title: 'Some title', 
      layers: [regioni], 
      queryVisible: true, 
      infoFormat: 'application/vnd.ogc.gml', 
      maxFeatures: 10 
    }); 

디버깅하는 일반적인 단계에 관해서는, 나는 HTTP 요청이 브라우저에 의해 만들어지고 있는지, 만약 있다면, 파악하기 위해 도구를 사용하는 것이 좋습니다 것입니다. Chrome 또는 Safari를 사용하는 경우 마우스 오른쪽 버튼으로 '요소 검사'를 클릭하고 네트워크 탭으로 이동 한 다음지도를 클릭하면됩니다. 요청이 네트워크 탭에 나타나야하며 요청이 올바른지 그리고 응답이 올바른지 진단 할 수 있습니다.