code: public String getPOIs(String id, int z, int x, int y, List<Param> optionalParams) throws Exception {
  		DescribeService describeService = getDescribeServiceByID(id);
  
  		Extent e1 = TileConversor.tileOSMMercatorBounds(x, y, z);
  
  		double[] minXY = ConversionCoords.reproject(e1.getMinX(), e1.getMinY(), CRSFactory.getCRS(MERCATOR_SRS),
  				CRSFactory.getCRS(GEODETIC_SRS));
  		double[] maxXY = ConversionCoords.reproject(e1.getMaxX(), e1.getMaxY(), CRSFactory.getCRS(MERCATOR_SRS),
  				CRSFactory.getCRS(GEODETIC_SRS));
  
  		POIProxyEvent beforeEvent = new POIProxyEvent(POIProxyEventEnum.BeforeBrowseZXY, describeService, e1, z, y, x,
  				null, null, null, null, null, null);
  		notifyListenersBeforeRequest(beforeEvent);
  
  		String geoJSON = getCacheData(beforeEvent);
  		boolean fromCache = true;
  
  		if (geoJSON == null) {
  			fromCache = false;
  			geoJSON = getResponseAsGeoJSON(id, optionalParams, describeService, minXY[0], minXY[1], maxXY[0], maxXY[1],
  					0, 0, beforeEvent);
  		}
  
  		POIProxyEvent afterEvent = new POIProxyEvent(POIProxyEventEnum.AfterBrowseZXY, describeService, e1, z, y, x,
  				null, null, null, null, geoJSON, null);
  
  		if (!fromCache) {
  			storeData(afterEvent);
  		}
  
  		notifyListenersAfterParse(afterEvent);
  
  		return geoJSON;
  	}
docs: This method is used to get the pois from a service and return a GeoJSON
  document with the data retrieved given a Z/X/Y tile.
  
  @param id
  The id of the service
  @param z
  The zoom level
  @param x
  The x tile
  @param y
  The y tile
  @return The GeoJSON response from the original service response