Vairāk

GetFeatureInfo nedarbojas ar GeoServer punktu līniju avotiem

GetFeatureInfo nedarbojas ar GeoServer punktu līniju avotiem


Noklikšķinot uz punktu un līniju slāņiem, es nevaru iegūt informāciju, izmantojot GetFeatureInfo pieprasījumu. Daudzstūriem tas darbojas labi.

Es izmantoju zemāk esošo kodu, lai izpildītu WMS pakalpojumu:

google.maps.event .addListener (karte, "klikšķis", funkcija (notikums) {// event.latLng.lng () + "%2C" + event.latLng.lat () + "%2C" + event.latLng .lng () + "%2C" + event.latLng.lat () var myLatLng = event.latLng; var lat = myLatLng.lat (); var lng = myLatLng.lng (); // var latlng = new google. maps.LatLng (lat, lng); // var bounds = new google.maps.LatLngBounds (southWest, northEast); var bounds = new google.maps.LatLngBounds (new google.maps.LatLng (lat, lng), new google .maps.LatLng (lat, lng)); // var bbox = lat + "," + lng + "," + lat + "," + lng; var projectionMap = jauns MercatorProjection (); var point = projectionMap .fromLatLngToPoint (event.latLng); var lULP = jauns google.maps.Point (x. punkts * 256, (punkts.y + 1) * 256); var lLRP = jauns google.maps.Point ((punkts.x + 1) * 256, punkts y. = lLRg.y; var lLR_Garums = lLRg.x; // GJ: ir kļūda, šķērsojot -180 garuma robežu (flīze netiek atveidota) - šķiet, ka šī pārbaude to izlabo, ja (lLR_Longitude 

/* Dokuments: wms.js Izveidots: 2011. gada 16. februārī, 15:25:27 Autors: "Gevins Džeksons "Pārveidots kods no http://lyceum.massgis.state.ma.us/wiki/doku.php?id=googlemapsv3:home */funkcija saistīta (vērtība, opt_min, opt_max) {if (opt_min! = Null) value = Math.max (vērtība, opt_min); if (opt_max! = Null) value = Math.min (vērtība, opt_max); atgrieztā vērtība;} funkcija laipsniųToRadians (deg) {return deg * (Math.PI / 180);} funkcija radiansToDegrees (rad) {return rad / (Math.PI / 180);} funkcija MercatorProjection () {var MERCATOR_RANGE = 256; this.pixelOrigin_ = new google.maps.Point (MERCATOR_RANGE / 2, MERCATOR_RANGE / 2); this.pixels_perLon = MERCATOR_RANGE / 360; this.pixelsPerLonRadian_ = MERCATOR_RANGE / (2 * Math.PI);}; MercatorProjection.prototype.fromLatLngToPoint = function (latLng, opt_point) {var me = this; var point = opt_point || new google.maps. Punkts (0, 0); var origin = me.pixelOrigin_; point.x = origin.x + latLng.lng () * me.pixelsPerLonDegree_; // PIEZĪME (appleton): nogriežot līdz 0,9999, platuma ierobežojums faktiski ir // 89.189. Tas ir apmēram trešdaļa flīžu t pasaules flīzes mala. var siny = piesaistīts (Matemātika.sin (grādiToRadians (latLng.lat ()))), -0.9999, 0.9999); punkts.y = izcelsme.y + 0.5 * Matemātikas žurnāls ((1 + grēcīgs) / (1 - grēcīgs)) * -me.pikseļiPerLonRadian_; atgriešanās punkts; }; MercatorProjection.prototype.fromDivPixelToLatLng = funkcija (pikseļi, tālummaiņa) {var me = this; var izcelsme = me.pixelOrigin_; var skala = Math.pow (2, tālummaiņa); var lng = (pikseļi.x / skala - izcelsme.x) / me.pixelsPerLonDegree_; var latRadians = (pixel.y / scale - origin.y) / -me.pixelsPerLonRadian_; var lat = radiansToDegrees (2 * Math.atan (Math.exp (latRadians)) - Math.PI / 2); atgriezt jaunu google.maps.LatLng (lat, lng); }; MercatorProjection.prototype.fromDivPixelToSphericalMercator = funkcija (pikseļi, tālummaiņa) {var me = this; var coord = me.fromDivPixelToLatLng (pikseļi, tālummaiņa); var r = 6378137,0; var x = r * grādiToRadians (coord.lng ()); var latRad = grādiToRadians (coord.lat ()); var y = (r / 2) * Math.log ((1 + Math.sin (latRad)) / (1 - Math.sin (latRad))); atgriezt jaunu google.maps.Point (x, y); };

Vai kāds saskārās ar to pašu problēmu?


Es domāju, ka jūsu WMS pieprasījumā jūs varētu kļūt nedaudz sarežģītāks. Jums nav jāpārvērš koordinātas klienta pusē, jo GeoServer to patiešām labi pārvalda! Arī punkta stila maiņa nemainīs to, vai jūs to noķersit, jo tā joprojām ir tikai punkta atrašanās vieta. Jūs vēlaties būt izplūdis savā atlasē. Es to daru, izmantojot ierobežojošo kasti.

Lūk, kā es varu veikt WMS pieprasījumu ar nelielu ierobežojošu lodziņu (skatiet pilnu avotu):

funkcija getFeatureWMS (slānis, clickCoords) {log ("Informācijas iegūšana par slāni:" + layer.title, 2) var wms_gf_url = layer.url var bbox = (clickCoords.lng - 0.0001) + "," + (clickCoords.lat - 0,0001) + "," + (clickCoords.lng + 0,0001) + "," + (clickCoords.lat + 0,0001) + ', EPSG: 4326' var parametri = {pakalpojums: 'WFS', versija: '1.1.1' , pieprasījums: 'GetFeature', typeName: layer.meta.name, maxFeatures: 100, outputFormat: 'application/json', SrsName: 'EPSG: 4326', bbox: bbox}; $ .ajax ({url: wms_gf_url + L.Util.getParamString (parametri), dataType: 'json', success: handleWMSJSON (slānis)}); }

Šeit ir faktiskais darba pieprasījums:

https://maps.gcc.tas.gov.au/geoserver/GCC_cc/ows?service=WFS&version=1.1.1&request=GetFeature&typeName=Stormwaterpipes&maxFeatures=100&outputFormat=application%2Fjson&SrsName=260.2260260-4260 24892915616036%2C-42.79916797276234%2CEPSG%3A4326

Tagad es saprotu, ka šeit izmantoju WFS, jo tas ir labāk šiem mērķiem. Bet jūs varat darīt to pašu, izmantojot WMS, piemēram:

https://wms.tidetech.org/geoserver/public/ows?service=WMS&version=1.1.1&request=GetFeatureInfo&layers=tidal_currents_bass_strait&query_layers=tidal_currents_bass_strait&feature_count=10&info_format=text%2Fjavascript&format_options=callback%3AhandleJson&SrsName=EPSG%3A4326&width=101&height=101&x=50&y= 50 & bbox = 146.39169921875%2C-39.98445017823439%2C146.59169921875%2C-39.78445017823439 & time = 2016-08-21T00%3A00%3A00.000Z & atzvanīšana = jQuery22106027783352390412_1473385578

Skatīties video: OpenLayers Introduction for Beginners